SQL: Count() mit Sortierung und Bedingung

Hallo,
ich habe folgendes Problem:
Ich möchte in einer Tabelle zählen, wieviele Werte in zwei Spalten gleich sind und dieses Ergebnis nach einer weiteren Spalte gruppieren. Beispiel:

NR ,Ort, L1, L2
 1 , A , 1 , 1
 1 , B , 3 , 4
 1 , C , 4 , 4
 2 , A , 2 , 3
 2 , B , 3 , 3
 2 , C , 2 , 1

Mein Ergebnis soll lauten:

NR , gleiche
 1 , 2
 2 , 1

Denn unter NR 1 haben L1 und L2 zweimal den gleichen Wert, unter NR 2 haben L1 und L2 einmal den gleichen Wert.
Wie mache ich das?

Vielen Dank für jede Hilfe!

Michl

Hi,
generell kannst Du mit der Group by-Spalte Werte „per Gruppe“ zusammenzählen. Hättest Du eine Spalte „Gleiche“, die 1 enthält, wenn beide Werte gleich sind, ansonsten 0, so könntest Du formulieren:
select nr, sum(Gleiche) from Tabelle group by nr;

Die Spalte Gleiche hast Du aber nicht. Dies ist aber kein Problem: man bastelt sie schnell mit der Iif-Funktion:

select nr, l1, l2, iif(l1 = l2, 1, 0) as Gleiche from tabelle;

Deine Summierung sieht also so aus:

select nr, 
 sum(iif(l1 = l2, 1, 0)) as Gleiche 
 from Tabelle 
 group by nr;

Gruß

J.

Interbase hat kein iif?
Hi,

vielen Dank!
Nun noch eine Frage: das klappt bei mir nicht…Fehlermeldung: „Token unknown =“
Kann es sein, dass Interbase kein iif kann?

Vielen Dank,

Michl

Hi,

Kann es sein, dass Interbase kein iif kann?

Durchaus. Irgendwie war ich von Access ausgegangen - warum auch immer.
Aber irgend etwas entsprechendes wird es geben, sei es decode, case oder wie auch immer. Leider kenne ich Interbase nicht.

Gruß

J.

ich habe auch mal eine recht einfache loesung gefunden, ich hoffe die hilft (ist ansii-sql und deswegen sollte dies auch bei interbase gehen)

select nr, count(nr) from test_www where l1=l2 group by nr;

habe die tabelle mal test_www genannt…

der jan

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]