Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Zählen mit Bedingungen und DISTINCT

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von knkrg, 4 März 2015.

  1. knkrg

    knkrg Benutzer

    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!
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Zeig mal bitte die Definition der Tabelle.
     
  3. Distrilec

    Distrilec Datenbank-Guru

    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
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden