在一列上选择DISTINCT使用SQL Server,我有......ID SKU PRODUCT=======================1 FOO-23 Orange2 BAR-23 Orange3 FOO-24 Apple4 FOO-25 Orange我想要1 FOO-23 Orange3 FOO-24 Apple这个问题不是让我在那里。如何在一列上选择DISTINCT?SELECT [ID],[SKU],[PRODUCT]FROM [TestData] WHERE ([PRODUCT] = (SELECT DISTINCT [PRODUCT] FROM [TestData] WHERE ([SKU] LIKE 'FOO-%')) ORDER BY [ID]
3 回答
白衣非少年
TA贡献1155条经验 获得超0个赞
假设您使用的是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 aWHERE a.RowNumber = 1
慕田峪9158850
TA贡献1794条经验 获得超7个赞
这是一个版本,基本上与其他几个答案相同,但是您可以将粘贴复制到SQL Server Management Studio中进行测试(并且不会生成任何不需要的表),这要归功于一些内联值。
WITH [TestData]([ID],[SKU],[PRODUCT]) AS( SELECT * FROM ( VALUES (1, 'FOO-23', 'Orange'), (2, 'BAR-23', 'Orange'), (3, 'FOO-24', 'Apple'), (4, 'FOO-25', 'Orange') ) AS [TestData]([ID],[SKU],[PRODUCT]))SELECT * FROM [TestData] WHERE [ID] IN ( SELECT MIN([ID]) FROM [TestData] GROUP BY [PRODUCT])
结果
ID SKU PRODUCT1 FOO-23 Orange3 FOO-24 Apple
我忽略了以下......
WHERE ([SKU] LIKE 'FOO-%')
作为作者唯一的错误代码部分而不是问题的一部分。对于看这里的人来说,它不太可能有用。
智慧大石
TA贡献1946条经验 获得超3个赞
试试这个:
SELECT * FROM [TestData] WHERE Id IN(SELECT DISTINCT MIN(Id) FROM [TestData] GROUP BY Product)
- 3 回答
- 0 关注
- 593 浏览
添加回答
举报
0/150
提交
取消