Zeilen behalten nach Group By

starbug

Erfahrenes Mitglied
Hallo zusammen,

ich hätte mal eine generelle Frage zur Gruppenfunktionen. Also, ich habe ungefähr folgendes Statement:

select abteilung ,
count (*) Anzahl
from tab_abteilung
group by abteilung

Als Ergebnis bekomme ich dann sowas:

Abteilung Anzahl

Abteilung 1 10
Abteilung 2 20

Wenn allerdings zu einer Abteilung keine Werte vorhanden sind, z.B. Abteilung 1, sieht es so aus:

Abteilung Anzahl

Abteilung 2 20

Ich möchte aber dass es so aussieht:

Abteilung Anzahl

Abteilung 1 0
Abteilung 2 20

also dass die Zeile quasi erhalten bleibt und "0" angezeigt wird.

Weiß jemand wie das geht??? Für Antworten wäre ich sehr dankbar.
 
Dazu musst du die Abteilungen in einer anderen Tabelle hinterlegt haben. Denn, wenn die Abteilung 1 keine Daten hat, dann weiss das SQL ja nicht, dass da eine Abteilung 1 exisiteren könnte.

Um was für eine DB handelt es sich? Oracle? MySQL?
 
Hallo,

es ist eine Oracle-DB. Die Abteilung steht eigentlich auch in einer eigenen Tabelle, ich wollte das Beispiel nur so einfach wie möglich halten.
 
Du hast dein Beispiel zu einfach gemacht.
Die Daten mit einem LEFT JOIN an die Abteilungen anhängen und im COUNT() auf ein eld der Daten prüfen
If you specify expr, then COUNT returns the number of rows where expr is not null. You can count either all rows, or only distinct values of expr.

Beispiel:
Code:
meta_abteilungen:
aid | abteilung
----|------------
  1 | Abteilung 1
  2 | Abteilung 2

tab_abteilung:
tid | aid | irgendwas
  1 |   2 | abc
  2 |   2 | def
SQL:
select
  abt.abteilung,
  count(tab.tid) as anzahl
from
  meta_abteilungen abt
  left join tab_abteilung tab
  on abt.aid = tab.aid
group by
  abt.abteilung;
 
Zurück