[英]SQL Select the Columnid with a max column group by one column
我认为这个问题已经回答了,但没有满足我的问题。
我想通过表中的最新日期值( MAX
)选择名称组的ID。 使用“ Name
列分组和“ Date
列分组,我必须获取ID
, Name
, Date
。
这是我的桌子
ID Name Date
---------------------------------------
1 Brent 2012-02-17
2 Ash 2012-08-02
3 Brent 2012-08-15
4 Harold 2012-09-30
5 Margaret 2012-10-10
6 Ash 2012-12-01
7 Harold 2013-02-14
8 Ash 2012-01-01
9 Brent 2013-05-11
输出必须是:
ID Name Date
---------------------------------------
5 Margaret 2012-10-10
6 Ash 2012-12-01
7 Harold 2013-02-14
9 Brent 2013-05-11
我尝试以下语句:
SELECT
[ID], [Name], MAX([Date]) as [Date]
FROM
[SampleTable]
GROUP BY
[Name]
但是我得到这个错误:
在选择列表中,列“ ID”无效,因为该列未包含在聚合函数或GROUP BY子句中。
您可以使用窗口函数,例如ROW_NUMBER()
SELECT a.ID, a.Name, a.Date
FROM
(
SELECT ID, Name, Date,
ROW_NUMBER() OVER (PARTITION BY ID ORDER BY DATE DESC) rn
FROM TableName
) a
WHERE a.rn = 1
如果每个组的ID
和Name
都相同,则只需在GROUP BY
子句中添加Name
。
GROUP BY ID, Name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.