Usando o SQL Server, eu tenho ...
ID SKU PRODUCT
=======================
1 FOO-23 Orange
2 BAR-23 Orange
3 FOO-24 Apple
4 FOO-25 Orange
eu quero
1 FOO-23 Orange
3 FOO-24 Apple
Esta consulta não está me levando até lá. Como posso selecionar DISTINCT em apenas uma coluna?
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
fonte
fonte
Respostas:
Supondo que você esteja no SQL Server 2005 ou superior, você pode usar um CTE com ROW_NUMBER ():
fonte
A solução mais simples seria usar uma subconsulta para encontrar o ID mínimo correspondente à sua consulta. Na subconsulta que você usa em
GROUP BY
vez deDISTINCT
:fonte
tente isto:
EDITAR
uma vez que o OP corrigiu sua saída de amostra (anteriormente tinha apenas UMA linha de resultado, agora foi mostrada), esta é a consulta correta:
fonte
fonte
Eu sei que isso foi perguntado há mais de 6 anos, mas o conhecimento ainda é conhecimento. Esta é uma solução diferente da anterior, pois tive que executá-la no SQL Server 2000:
fonte
Aqui está uma versão, basicamente o mesmo que algumas das outras respostas, mas que você pode copiar e colar no SQL Server Management Studio para testar (e sem gerar tabelas indesejadas), graças a alguns valores embutidos.
Resultado
Eu ignorei o seguinte ...
como sua única parte do código defeituoso dos autores e não parte da questão. É improvável que seja útil para as pessoas que olham aqui.
fonte
Tente o seguinte:
SELECT * FROM [TestData] WHERE Id IN(SELECT DISTINCT MIN(Id) FROM [TestData] GROUP BY Product)
fonte