Paire de valeurs distincte SQL

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éro 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 tu veux 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épondre ci-dessus

Cela vous donnera le résultat que vous donnez comme exemple:

 SELECT DISTINCT a, b FROM pairs 

Si vous souhaitez filtrer les tuples que vous pouvez utiliser de cette façon:

 select distinct (case a > b then (a,b) else (b,a) end) from pairs 

Les bonnes choses sont que vous n’avez pas à utiliser le group by.

Si vous voulez juste un compte des paires distinctes.

La façon la plus simple de procéder est la suivante: SELECT COUNT(DISTINCT a,b) FROM pairs

Les solutions précédentes listeraient toutes les paires et vous devriez ensuite faire une seconde requête pour les compter.