wake-up-neo.com

Deutliches Wertepaar SQL

Erwägen

 create table pairs ( number a, number b ) 

Wo sind die Daten? 

1,1
1,1
1,1
2,4
2,4
3,2
3,2
5,1

Usw. 

Welche Abfrage gibt mir die eindeutigen Werte, die die Zahlenspalte b hat? So kann ich sehen

1,1
5,1
2,4
3,2

nur 

Ich habe es versucht

select distinct ( a ) , b from pairs group by b 

aber gibt mir "keine Gruppe durch Ausdruck" 

49
OscarRyz

Was du meinst ist entweder

SELECT DISTINCT a, b FROM pairs;

oder

SELECT a, b FROM pairs GROUP BY a, b;

Wenn Sie 1,2 und 2,1 als dasselbe Paar behandeln möchten, erhalten Sie eine eindeutige Liste in 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

Inspiriert von @meszias Antwort oben

13
StuartQ

Dies gibt Ihnen das Ergebnis, das Sie als Beispiel geben:

SELECT DISTINCT a, b
FROM pairs

wenn Sie die Tupel filtern möchten, können Sie diese auf folgende Weise verwenden:

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

das Gute ist, dass Sie keine Gruppe verwenden müssen.

4
meszias

Wenn Sie nur eine Anzahl der verschiedenen Paare wünschen.

Der einfachste Weg, dies zu tun, ist wie folgt :__.SELECT COUNT(DISTINCT a,b) FROM pairs

Bei den vorherigen Lösungen wurden alle Paare aufgelistet. Anschließend mussten Sie eine zweite Abfrage durchführen, um sie zu zählen.

0
adam