1つの列に対するSELECT DISTINCT 質問する

1つの列に対するSELECT DISTINCT 質問する

SQL Server を使用すると、...

ID  SKU     PRODUCT
=======================
1   FOO-23  Orange
2   BAR-23  Orange
3   FOO-24  Apple
4   FOO-25  Orange

欲しい

1   FOO-23  Orange
3   FOO-24  Apple

このクエリでは目的を達成できません。 1 つの列のみで SELECT DISTINCT を実行するにはどうすればよいでしょうか?

SELECT 
[ID],[SKU],[PRODUCT]
FROM [TestData] 
WHERE ([PRODUCT] = 
(SELECT DISTINCT [PRODUCT] FROM [TestData] WHERE ([SKU] LIKE 'FOO-%')) 
ORDER BY [ID]

ベストアンサー1

SQL Server 2005 以降を使用している場合は、ROW_NUMBER() で CTE を使用できます。

SELECT  *
FROM    (SELECT ID, SKU, Product,
                ROW_NUMBER() OVER (PARTITION BY PRODUCT ORDER BY ID) AS RowNumber
         FROM   MyTable
         WHERE  SKU LIKE 'FOO%') AS a
WHERE   a.RowNumber = 1

おすすめ記事