2009-07-29 9 views
2

Ich versuche die Anzahl der Zeilen zu zählen, die unterschiedliche Werte in beiden Spalten "a" und "b" in meiner Sybase ISQL 9-Datenbank haben.Zählen der Zeilen mehrerer unterschiedlicher Spalten

Was ich bedeuten, ist die folgende Datensatz wird die Antwort "4" produzieren:

a b

1 9 2 9 3 8 3 7 2 9 3 7

So etwas wie die folgenden Syntax wäre schön:

SELECT COUNT(DISTINCT a, b) FROM MyTable 

Aber das tut nicht Arbeit.

ich eine Lösung:

SELECT COUNT(*) FROM 
    (SELECT a, b 
    FROM MyTable 
    WHERE c = 'foo' 
    GROUP BY a, b) SubTable 

Aber ich frage mich, ob es für den Bau dieser Abfrage eine sauberere Weg?

+0

Was ist "c = 'foo'" –

+0

c = 'foo' war einfach um zu zeigen, dass es andere Zeilen in der Tabelle gab, an denen ich nicht interessiert bin. –

Antwort

2

Sie ein verketten könnte und b zusammen in 1 Zeichenfolge wie folgt (TSQL, hoffentlich etwas sehr ähnliches in Sybase:

SELECT COUNT(DISTINCT(STR(a) + ',' + STR(b))) 
FROM @YourTable 
+2

Das würde nicht funktionieren, wenn a oder b Zeichenfolgenspalten sind, die Kommas enthalten – soulmerge

+0

Wahr, ich nahm an, dass sie ganze Zahlen waren Trennzeichen könnte verwendet werden ... etwas wie "{RANDOM_DELIM}". Nur ein Fall der Entscheidung über ein geeignetes Trennzeichen Ich denke – AdaTheDev

+0

Die Daten, die ich interessiere, sind als Ints gespeichert, so dass diese Methode funktioniert - ich habe es gerade getestet ! –

3

Wie wäre:

SELECT COUNT(*) 
FROM (SELECT DISTINCT a, b FROM MyTable) 

Weitere Informationen darüber, warum dies nicht auf einfachere Art und Weise durchgeführt werden (außer Verketten von Strings wie in einer anderen Antwort angegeben ist), können Sie beziehen sich auf die this Google Antworten Beitrag : Sql Distinct Count.

Verwandte Themen