【发布时间】:2016-01-11 05:03:42
【问题描述】:
我需要为具有多个日期和序列列的表编写一个 T-SQL 组查询:
DROP TABLE #temp
CREATE TABLE #temp(
id char(1),
dt DateTime,
seq int)
Insert into #temp values('A','2015-03-31 10:00:00',1)
Insert into #temp values('A','2015-08-31 10:00:00',2)
Insert into #temp values('A','2015-03-31 10:00:00',5)
Insert into #temp values('B','2015-09-01 10:00:00',1)
Insert into #temp values('B','2015-09-01 10:00:00',2)
我希望结果仅包含项目 A、B 及其 最新日期 和 对应 seq 编号,例如:
id MaxDate CorrespondentSeq
A 2015-08-31 10:00:00.000 2
B 2015-09-01 10:00:00.000 2
我正在尝试(显然错了!):
select id, max(dt) as MaxDate, max(seq) as CorrespondentSeq
from #temp
group by id
返回:
id MaxDate CorrespondentSeq
A 2015-08-31 10:00:00.000 5 <-- 5 is wrong
B 2015-09-01 10:00:00.000 2
我怎样才能做到这一点?
编辑
dt datetime 列有重复值(完全相同的日期!)
我使用的是 SQL Server 2005
【问题讨论】:
-
如果有相同 id 的日期重复的行,那么您需要指定查询处理器应该使用什么来确定要返回哪些重复。
标签: tsql sql-server-2005