我有一张表格,其中包含屏幕截图中的数据
。
我只需要每月拥有最大Snapshot_Date的记录。
我需要我的结果数据集如下
我怎么能这样做。我需要你的想法。
我尝试使用
select *
from table
where Snapshot_Date = (select MAX(Snapshot_Date)
from table
where DATEPART(MONTH,Snapshot_Date)=11)
但我需要在这里硬编码月份数! 谢谢你的时间!!
答案 0 :(得分:6)
SELECT Snapshot_Date, Quantity
FROM
(
SELECT DATENAME(month, Snapshot_Date) MonthName,
Snapshot_Date, Quantity,
ROW_NUMBER() OVER (PARTITION BY DATENAME(month, Snapshot_Date)
ORDER BY Snapshot_Date DESC) rn
FROM tableName
) a
WHERE rn = 1
来源
答案 1 :(得分:1)
您好我通过使用分区功能解决了这个问题
SELECT Snapshot_Date, Quantity
FROM (
SELECT Snapshot_Date, Quantity, rn = ROW_NUMBER() OVER
(PARTITION BY DATEDIFF(MONTH, '20000101', Snapshot_Date)
ORDER BY Snapshot_Date desc)
FROM table
) AS x
WHERE x.rn = 1
ORDER BY x.Snapshot_Date