Используя 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
Этот запрос не доставляет меня туда. Как выбрать SELECT DISTINCT только для одного столбца?
SELECT
[ID],[SKU],[PRODUCT]
FROM [TestData]
WHERE ([PRODUCT] =
(SELECT DISTINCT [PRODUCT] FROM [TestData] WHERE ([SKU] LIKE 'FOO-%'))
ORDER BY [ID]
sql
sql-server
tsql
distinct
mmcglynn
источник
источник
Ответы:
Предполагая, что вы используете SQL Server 2005 или более позднюю версию, вы можете использовать CTE с ROW_NUMBER ():
источник
Простейшим решением будет использование подзапроса для поиска минимального идентификатора, соответствующего вашему запросу. В подзапросе вы используете
GROUP BY
вместоDISTINCT
:источник
попробуй это:
РЕДАКТИРОВАТЬ, как
только ОП исправил свой вывод сэмпла (раньше у него была только ОДНА строка результатов, теперь все показано), это правильный запрос:
источник
источник
Я знаю, что это было задано более 6 лет назад, но знание все еще знание. Это решение отличается от всего вышеперечисленного, так как мне приходилось запускать его под SQL Server 2000:
источник
Вот версия, в основном та же, что и у пары других ответов, но которую вы можете скопировать в свою среду SQL Server Management Studio для тестирования (и без создания нежелательных таблиц), благодаря некоторым встроенным значениям.
результат
Я проигнорировал следующее ...
так как это единственная часть авторов ошибочного кода, а не часть вопроса. Это вряд ли будет полезно для людей, которые ищут здесь.
источник
Попробуй это:
SELECT * FROM [TestData] WHERE Id IN(SELECT DISTINCT MIN(Id) FROM [TestData] GROUP BY Product)
источник