1

我有一个表格,其中包含屏幕截图中给出的数据

.在此处输入图像描述

我只需要获取每个月具有最大 Snapshot_Date 的那些记录。

我需要我的结果数据集如下

在此处输入图像描述

我怎么能这样做。我需要你的想法。

我尝试使用

select * 
from table 
where Snapshot_Date = (select MAX(Snapshot_Date) 
                       from table 
                      where DATEPART(MONTH,Snapshot_Date)=11) 

但我需要在这里硬编码月份数字!!谢谢你的时间!!

4

2 回答 2

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

来源

于 2012-11-06T23:45:00.270 回答
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

于 2012-11-07T00:22:55.613 回答