Usando SQL Server, tengo ...
ID SKU PRODUCT
=======================
1 FOO-23 Orange
2 BAR-23 Orange
3 FOO-24 Apple
4 FOO-25 Orange
quiero
1 FOO-23 Orange
3 FOO-24 Apple
Esta consulta no me lleva allí. ¿Cómo puedo SELECCIONAR DISTINCT en una sola columna?
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
fuente
fuente
Respuestas:
Suponiendo que está utilizando SQL Server 2005 o superior, puede usar un CTE con ROW_NUMBER ():
fuente
La solución más simple sería utilizar una subconsulta para encontrar el ID mínimo que coincida con su consulta. En la subconsulta que usas en
GROUP BY
lugar deDISTINCT
:fuente
prueba esto:
EDITAR
una vez que el OP corrigió su salida samle (anteriormente solo tenía UNA fila de resultados, ahora se ha mostrado todo), esta es la consulta correcta:
fuente
fuente
Sé que se hizo hace más de 6 años, pero el conocimiento sigue siendo conocimiento. Esta es una solución diferente a todas las anteriores, ya que tuve que ejecutarla en SQL Server 2000:
fuente
Aquí hay una versión, básicamente la misma que algunas de las otras respuestas, pero que puede copiar y pegar en su SQL Server Management Studio para probar, (y sin generar tablas no deseadas), gracias a algunos valores en línea.
Resultado
He ignorado lo siguiente ...
como su única parte del código defectuoso de los autores y no es parte de la pregunta. Es poco probable que sea útil para las personas que buscan aquí.
fuente
Prueba esto:
SELECT * FROM [TestData] WHERE Id IN(SELECT DISTINCT MIN(Id) FROM [TestData] GROUP BY Product)
fuente