Zählen mit Bedingungen und DISTINCT

knkrg

Benutzer
Beiträge
7
Hallo,

ich stehe gerade bei einer SQL Abfrage auf dem Schlauch und bin auf der Suche nach einem kleinen Anregung, wie ich das Problem lösen kann.

Ich habe in der Datenbank Vorgänge, denen mehrere Maßnahmen zugeordnet sein können:

Vorgang 1 -> Maßnahme 1 & 3
Vorgang 2 -> Maßnahme 2 & 1 & 3
Vorgang 3 -> Maßnahme 1

Nun möchte ich gerne die Anzahl der Vorgänge mit bestimmten Bedingungen zählen:

Anzahl der Vorgänge, die Maßnahme 1 & 2 enthalten;
Anzahl der Vorgänge, die Maßnahme 3 enthalten.

Mit
Code:
sum(case when Massnahme.id NOT LIKE 3 then 1 else 0 end)
kann ich ja eine Zählung sämtlicher Maßnahmen durchführen, die nicht die ID 3 haben. Wie kann ich jetzt sicherstellen, dass jeder Vorgang nur einmal gezählt wird, auch wenn mehrere Maßnahmen enthalten sind? Ich habe schon mit DISTINCT rumprobiert, allerdings ist dabei kein brauchbares Ergebnis rumgekommen.

Würde mich über einen Hinweis freuen, der das Chaos in meinem Kopf strukturiert!
 
Werbung:
Werbung:
As simple as that :)

Code:
SQL> With temp(vorgang, massnahme) As (Select 1 as vorgang, 1 as massnahme from dual Union All
  2          Select 1, 3 from dual Union All
  3          Select 2, 2 from dual Union All
  4          Select 2, 1 from dual Union All
  5          Select 2, 3 from dual Union All
  6          Select 3, 1 from dual)
  7  Select count(distinct vorgang)
  8  From   temp t
  9  Where  t.massnahme = 2;
COUNT(DISTINCTVORGANG)
----------------------
                     1
 
Zurück
Oben