SQL Server に対して次のクエリを実行しています。
SELECT SongUID, ArtistAlias, TitleAlias, Quality
FROM
(SELECT
ROW_NUMBER() OVER(PARTITION BY ArtistAlias, TitleAlias
ORDER BY Quality Desc) AS rn, *
FROM KaraokeLibrary) dt
WHERE rn = 1
しかし、SQL Server CE 4 で実行することはできません (ROW_NUMBER()
サポートされておらず、サポートされてOVER...PARTITION
いません)。
次のクエリを使用して、SQL Server CE で「閉じる」ことができました。
SELECT SongUID, ArtistAlias, TitleAlias, Quality
FROM KaraokeLibrary A
WHERE Quality >= 0 AND Quality IN (SELECT MAX(Quality)
FROM KaraokeLibrary B
WHERE B.ArtistAlias = A.ArtistAlias
AND B.TitleAlias = A.TitleAlias)
ORDER BY ArtistAlias, TitleAlias
しかし、それでも重複するアーティスト/タイトルがリストされます - これはありません。
SQL Server CE の達人は、これについて私のためにいくつかのクエリ マジックを持っていますか?
更新: さらに説明すると、私が求めている最終結果は、次のようなデータが与えられた場合です。
SongUID ArtistAlias TitleAlias Quality
10, 'Artist1', 'Title1', 3
11, 'Artist1', 'Title1', 2
12, 'Artist1', 'Title1', 1
13, 'Artist2', 'Title1', 3
14, 'Artist2', 'Title1', 2
15, 'Artist2', 'Title1', 1
16, 'Artist2', 'Title2', 2
18, 'Artist2', 'Title2', 1
19, 'Artist2', 'Title2', 3
20, 'Artist2', 'Title2', 3
21, 'Artist2', 'Title2', 1
これを返してもらいたい:
10, 'Artist1', 'Title1', 3
13, 'Artist2', 'Title1', 3
20, 'Artist2', 'Title2', 3