Korzystając z programu SQL Server, mam ...
ID SKU PRODUCT
=======================
1 FOO-23 Orange
2 BAR-23 Orange
3 FOO-24 Apple
4 FOO-25 Orange
chcę
1 FOO-23 Orange
3 FOO-24 Apple
To zapytanie mnie tam nie prowadzi. Jak wybrać DISTINCT tylko w jednej kolumnie?
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
źródło
źródło
Odpowiedzi:
Zakładając, że korzystasz z SQL Server 2005 lub nowszej wersji, możesz użyć CTE z ROW_NUMBER ():
źródło
Najprostszym rozwiązaniem byłoby użycie podzapytania w celu znalezienia minimalnego identyfikatora pasującego do zapytania. W podzapytaniu używasz
GROUP BY
zamiastDISTINCT
:źródło
Spróbuj tego:
EDYTUJ,
gdy OP poprawi wyniki swojej próbki (poprzednio miał tylko JEDEN wiersz wyników, teraz wszystko się pokazuje), to jest prawidłowe zapytanie:
źródło
źródło
Wiem, że zapytano o to ponad 6 lat temu, ale wiedza to wciąż wiedza. To jest inne rozwiązanie niż wszystkie powyższe, ponieważ musiałem uruchomić go w SQL Server 2000:
źródło
Oto wersja, w zasadzie taka sama jak kilka innych odpowiedzi, ale którą można skopiować wklej do SQL Server Management Studio, aby przetestować (i bez generowania niechcianych tabel), dzięki niektórym wartościom wbudowanym.
Wynik
Zignorowałem następujące ...
jako jedyna część wadliwego kodu autora, a nie część pytania. Jest mało prawdopodobne, aby był pomocny dla ludzi, którzy tu szukają.
źródło
Spróbuj tego:
SELECT * FROM [TestData] WHERE Id IN(SELECT DISTINCT MIN(Id) FROM [TestData] GROUP BY Product)
źródło