Considérer
create table pairs ( number a, number b )
Où les données sont
1,1
1,1
1,1
2,4
2,4
3,2
3,2
5,1
Etc.
Quelle requête me donne les valeurs distinctes de la colonne numérique b
1,1
5,1
2,4
3,2
seulement
J'ai essayé
select distinct ( a ) , b from pairs group by b
mais me donne "pas un groupe par expression"
Ce que vous voulez dire est soit
SELECT DISTINCT a, b FROM pairs;
ou
SELECT a, b FROM pairs GROUP BY a, b;
Si vous voulez traiter 1,2 et 2,1 comme la même paire, cela vous donnera la liste unique sur MS-SQL:
SELECT DISTINCT
CASE WHEN a > b THEN a ELSE b END as a,
CASE WHEN a > b THEN b ELSE a END as b
FROM pairs
Inspiré par @meszias, répondez ci-dessus
Cela vous donnera le résultat que vous donnez à titre d'exemple:
SELECT DISTINCT a, b
FROM pairs
si vous voulez filtrer les n-uplets que vous pouvez utiliser de cette façon:
select distinct (case a > b then (a,b) else (b,a) end) from pairs
la bonne chose est que vous n'avez pas à utiliser group by.
Si vous voulez juste un nombre des paires distinctes.
La manière la plus simple de le faire est la suivante SELECT COUNT(DISTINCT a,b) FROM pairs
Les solutions précédentes listaient toutes les paires, puis il fallait faire une seconde requête pour les compter.