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 に答える