对具有不同日期的表进行分组

时间:2018-04-27 13:06:16

标签: sql sql-server

我有一张如下表格,

SalesId   ItemId     DateSale       USDVal
ABC       01A        2018-04-01     52
ABC       01B        2018-04-01     300
ABC       01C        2018-04-01     12
ABC       01D        2018-04-01     62
ABC       01A        2018-03-23     66
MNB       01A        2018-01-01     584
MNB       01A        2018-02-20     320
MNB       01F        2018-02-20     5

我想编写一个查询,选择每个SalesId的最后日期并显示这些记录,以便结果如下所示。

结果

SalesId   ItemId     DateSale       USDVal
ABC       01A        2018-04-01     52
ABC       01B        2018-04-01     300
ABC       01C        2018-04-01     12
ABC       01D        2018-04-01     62
MNB       01A        2018-02-20     320
MNB       01F        2018-02-20     5

1 个答案:

答案 0 :(得分:3)

在SQL Server中,最快的方法通常是相关的子查询:

select t.*
from t
where t.datesale = (select max(t2.datesale) from t t2 where t2.salesid = t.salesid);