Paire distincte de valeurs SQL
Considérez
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 pour que je puisse voir
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"
5 réponses
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, alors 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éponse ci-dessus
Cela vous donnera le résultat que vous donnez comme exemple:
SELECT DISTINCT a, b
FROM pairs
Si vous voulez filtrer les tuples 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 count des paires.
La façon la plus simple de le faire est la suivante
SELECT COUNT(DISTINCT a,b) FROM pairs
Les solutions précédentes listeraient toutes les paires et vous devrez ensuite faire une deuxième requête pour les Compter.