获取每月的最长日期(T-SQL)

时间:2012-11-06 23:41:31

标签: tsql

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

enter image description here

我只需要每月拥有最大Snapshot_Date的记录。

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

enter image description here

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

我尝试使用

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

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

2 个答案:

答案 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