通过聚合函数和group by子句在sql中进行简单查询

时间:2014-05-21 15:56:00

标签: sql sql-server

我有一张如下图所示的表格,我需要提取已按名称分组的最大日期时间的ID,名称和日期。

enter image description here

我可以通过此查询获得最大日期时间:

SELECT MAX(Table.Date),Table.name FROM Table GROUP BY Table.name

结果是:

enter image description here

要提取已按名称分组的最大日期时间信息,我已经有了这个查询:

SELECT t1.name, t1.Date, t1.id
FROM Table t1
WHERE t1.Date in (SELECT MAX(t2.Date)
FROM Table t2
GROUP BY t2.name)

结果是:

enter image description here

但不需要突出显示的数据。因为'D'是2014-01-12之间的最大日期。

注意:我可以通过JOIN表达式解决问题。

但由于节省时间,我需要一个简单的查询。

1 个答案:

答案 0 :(得分:0)

您可以使用行号,按

分区
Select * from
(Select *,rn=row_number()over(partition by name order by date desc) from table) x
Where x.rn = 1;