1

私はDocumentHistoryこの列を持つテーブルを持っています:

HistoryId   DocumentId    ChangeDate
    1           100       1/1/2005  
    2           100       2/1/2010         
    3           200       2/2/2006 
    4           100       2/2/2001 
    5           200       2/2/2000

HistoryIdが鍵です。各ドキュメントのTSQL最大値を見つけて返すクエリを書きたいと思います。つまり、クエリ結果は次のようになります。ChangeDateHistoryId

HistoryId       ChangeDate
    2            2/1/2010
    3            2/2/2006

どうすればできますか?

4

2 に答える 2

2

ランキング機能 を使用するROW_NUMBER() OVER(PARTITION BY ... ORDER BY...):

WITH CTE
AS
(
   SELECT *, 
     ROW_NUMBER() OVER(PARTITION BY DocumentId 
                       ORDER BY ChangeDate DESC) AS RN
   FROM DocumentHistory 
)
SELECT HistoryId, ChangeDate
FROM CTE
WHERE RN = 1;

ここで実際にそれを見てください:

于 2013-07-10T09:17:53.693 に答える