En utilisant SQL Server, j'ai ...
ID SKU PRODUCT
=======================
1 FOO-23 Orange
2 BAR-23 Orange
3 FOO-24 Apple
4 FOO-25 Orange
Je voudrais
1 FOO-23 Orange
3 FOO-24 Apple
Cette requête ne m'y amène pas. Comment sélectionner SELECT DISTINCT sur une seule colonne?
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
la source
la source
Réponses:
En supposant que vous êtes sur SQL Server 2005 ou supérieur, vous pouvez utiliser un CTE avec ROW_NUMBER ():
la source
La solution la plus simple serait d'utiliser une sous-requête pour trouver l'ID minimum correspondant à votre requête. Dans la sous-requête que vous utilisez
GROUP BY
au lieu deDISTINCT
:la source
essaye ça:
EDIT
une fois que l'OP a corrigé sa sortie de samle (auparavant, il n'y avait qu'une seule ligne de résultat, maintenant tout est affiché), c'est la bonne requête:
la source
la source
Je sais que cela a été demandé il y a plus de 6 ans, mais la connaissance est toujours une connaissance. C'est une solution différente de toutes celles ci-dessus, car je devais l'exécuter sous SQL Server 2000:
la source
Voici une version, essentiellement la même que quelques autres réponses, mais que vous pouvez copier coller dans votre SQL Server Management Studio pour tester, (et sans générer de tables indésirables), grâce à certaines valeurs en ligne.
Résultat
J'ai ignoré ce qui suit ...
comme sa seule partie du code défectueux des auteurs et ne fait pas partie de la question. Il est peu probable que cela aide les gens qui regardent ici.
la source
Essaye ça:
SELECT * FROM [TestData] WHERE Id IN(SELECT DISTINCT MIN(Id) FROM [TestData] GROUP BY Product)
la source