gpt4 book ai didi

SQL - 仅按最大日期选择唯一名称?

转载 作者:行者123 更新时间:2023-12-02 04:38:24 25 4
gpt4 key购买 nike

我有一个名为 Locations 的表,看起来像这样

Name       Date
Location A 01/01/2014
Location A 12/12/2013
Location B 01/01/2014
Location C 01/01/2014
Location D 01/01/2014
Location D 12/12/2013
Location E 12/12/2013

我只想返回日期为 MAX(Date) 的名称,即 01/01/2014 并且此名称只有 1 行且日期为 MAX(Date)

为了进一步解释我想返回

Name       Date
Location B 01/01/2014
Location C 01/01/2014

我尝试了一些查询,例如 HAVING 语句,但似乎无法获得所需的结果

最佳答案

这似乎可行:

declare @t table (Name varchar(49), [Date] date)
insert into @t(Name,[Date]) values
('Location A','20140101'),
('Location A','20131212'),
('Location B','20140101'),
('Location C','20140101'),
('Location D','20140101'),
('Location D','20131212'),
('Location E','20131212')

select Name,MAX(Date)
from @t
group by Name
having MIN(Date) = (select MAX(Date) from @t)

在这里使用哪种聚合并不重要:

select Name,MAX(Date)

前提是对 Date 的引用在一个聚合中。

结果:

Name                                              
------------------------------------------------- ----------
Location B 2014-01-01
Location C 2014-01-01

逻辑是 - 如果特定 Name最早日期也是整个表的最新日期,那么逻辑上只有此 Name 的一个条目,它是表中的最新日期。

(这是基于每个位置每天只能有一个条目的假设)

关于SQL - 仅按最大日期选择唯一名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21429568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com