我有一个表 Person,日期采用 yyyymmDD
格式,时间采用 hhmmssSSS
格式
ID NAME CREATEDDATE CREATEDTIME
1 A 20170205 135744300
2 B 20160205 113514368
3 C 20090205 163054942
4 A 20150205 135744301
现在我想在单个查询中获取每个人的计数以及最大创建日期和相应的创建时间
我试过了
SELECT NAME, COUNT (ID) AS COUNT, MAX(CREATEDDATE), MAX(CREATEDTIME)
FROM Person
但这给了我每列的最大日期和最大时间,它没有给我对应于 MAX(CREATEDDATE) 的 CREATEDTIME
例如
查询结果为
NAME COUNT MAXCREATEDDATE CORRESPONDINGCREATEDTIME
A 2 20170205 135744301
CORRESPONDINGCREATEDTIME
应为 135744300
请帮我做一下
最佳答案
您可以简单地使用子查询来完成此操作,该子查询查找每个名称的最大日期并执行内部联接。
测试数据
CREATE TABLE #Person (ID int, Name varchar(1), CreatedDate int, CreatedTime int)
INSERT INTO #Person (ID, Name, CreatedDate, CreatedTime)
VALUES
(1,'A',20170205,135744300)
,(2,'B',20160205,113514368)
,(3,'C',20090205,163054942)
,(4,'A',20150205,135744301)
查询
SELECT
a.Name
,b.CtName CountName
,a.CreatedDate
,a.CreatedTime
FROM #Person a
JOIN (
SELECT
Name
,COUNT(Name) CtName
,MAX(CreatedDate) MaxDate
FROM #Person
GROUP BY Name
) b
ON a.Name = b.Name
AND a.CreatedDate = b.MaxDate
结果
Name CountName CreatedDate CreatedTime
A 2 20170205 135744300
B 1 20160205 113514368
C 1 20090205 163054942
关于sql - 选择与 MAX 列值对应的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38009707/