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"

48
demandé sur OscarRyz 2009-08-26 00:14:11

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;
64
répondu Michael Krelin - hacker 2009-08-25 21:33:46

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

11
répondu StuartQ 2014-02-14 16:42:41

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

SELECT DISTINCT a, b
FROM pairs
9
répondu Lasse Vågsæther Karlsen 2009-08-25 20:16:58

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.

4
répondu meszias 2012-01-28 21:11:49

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.

0
répondu adam 2013-07-14 13:27:12