1

特定の期間内の各パーツ トランザクションを調べるクエリを実行しています。パーツによっては、トランザクションが 1 つだけの場合もあれば、1000 を超える場合もあります。パーツごとに最後の 5 つのトランザクションのみを取得する必要があります。これは、パーツごとに最後の 5 つのトランザクションのみを選択しない私のクエリです。

 SELECT     partnum, trandate, extcost
 FROM       parttran
 WHERE      trandate between '2012-05-15' and '2013-05-14'

あなたの助けに感謝します!

4

1 に答える 1

2

次のような状況で常に役立ちます: 次のようなウィンドウ関数を持つCTEROW_NUMBER :

WITH CTE AS
(
    SELECT  partnum, trandate, extcost,
            rn = ROW_NUMBER() OVER (PARTITION BY partnum ORDER BY trandate DESC)
    FROM    parttran
    WHERE   trandate between '2012-05-15' and '2013-05-14'
)
SELECT partnum, trandate, extcost FROM CTE WHERE rn <= 5
于 2013-05-17T13:44:04.293 に答える