0

テーブル「UserLibrary」があります

   Name  Library    AccessedTime

    A      ABC       2:00 am
    B      XYZ       4:00 am
    C      PQR       5:00 am 
    C      PQR       12:00 pm 
    C      PQR       2:00 pm
    D      LIT       4:00 pm

個別のユーザー、ライブラリ、および最終アクセス時刻のリストが必要です。

UserLibrary から * を選択すると、ユーザー 'C' とライブラリ 'PQR' の行が繰り返されますが、ユーザー C の最終アクセス時刻のみが必要です。

だから基本的に私は欲しい、

   Name  Library    AccessedTime

    A      ABC       2:00 am
    B      XYZ       4:00 am 
    C      PQR       2:00 pm
    D      LIT       4:00 pm

Sqlサーバーでこれを行うにはどうすればよいですか

4

2 に答える 2

1
select Name, Library, max(AccessedTime) as 'AccessedTime'
from UserLibrary
group by Name, Library
于 2013-10-30T11:48:30.487 に答える
1

ROW_NUMBER()フィルタリングできる連番を生成するものを使用できます。この場合、連番はすべてnameの およびに対して生成libraryされ、最新の でソートされAccessedTimeます。最新のレコードの値は1on になりrnます。

SELECT Name, Library, AccessedTime
FROM
(
    SELECT  Name, Library, AccessedTime,
            ROW_NUMBER() OVER ( PARTITION BY Name, Library
                                ORDER BY AccessedTime DESC) rn
    FROM    UserLibrary
) a
WHERE   a.rn = 1
于 2013-10-30T11:21:26.690 に答える