繁体   English   中英

SQL选择最大列分组为一列的Columnid

[英]SQL Select the Columnid with a max column group by one column

我认为这个问题已经回答了,但没有满足我的问题。

我想通过表中的最新日期值( MAX )选择名称组的ID。 使用“ Name列分组和“ Date列分组,我必须获取IDNameDate

这是我的桌子

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

如果每个组的IDName都相同,则只需在GROUP BY子句中添加Name

GROUP BY ID, Name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM