MS SQL - wie mit SELECT irrational richtig Filtern?

Ultraflip

Erfahrenes Mitglied
Hallo zusammen,

ich benutze MS SQL selbst eher selten und hoffe mir kann jemand erklären, wie ich folgendes Konstrukt korrekt selektieren kann.

In der Datenbank werden über mehrere Tabellen 3 wichtige Spalten gespeichert, in der

zu einem Vorgang (z. B. '001') immer ein Filter (z. B. 'Filter1') und ein oder mehrere Ergebnisse (z. B. 'A') gespeichert werden.

Ein Beispiel habe ich angehangen (CaptureSQL.png)

Ich würde gerne Zählen:
Wie oft ist Ergebnis A bei einem Filter 1 | Wie oft ist Ergebnis A bei einem Filter 2
Wie oft ist Ergebnis B bei einem Filter 1 | Wie oft ist Ergebnis B bei einem Filter 2

Als Beispiel (CaptureErgebnis.png)

Dabei kann bei einem Vorgang auch beide Ergebnise A + B vorkommen! (Im Beispiel Vorgang '002')

Von der Pflicht zur Kür:
Gibt es eine Möglichkeit die Ergebnisse automatisch zu erweitern, also: Abfrage welche Ergebnisse gibt es (In dem Fall A und B) oder müssen diese immer vorneweg als konstante angegeben werden?

Ich hoffe mir kann jemand auf die Sprünge helfen.

Vielen Dank vorab
Ultraflip
 

Anhänge

  • CaptureSQL.PNG
    CaptureSQL.PNG
    1,9 KB · Aufrufe: 26
  • CaptureErgebnis.PNG
    CaptureErgebnis.PNG
    1,3 KB · Aufrufe: 17
Hallo,

kenne mich mit MS SQL zwar auch nicht so gut aus, aber ich schreib mal wie es mit MYSQL ausschauen würde, eventuell hilft es dir weiter.

SQL:
SELECT
Ergebnis_id,
sum(case when Ergebnis_Name = 'A' then 1 else 0 end) as Filer_A
sum(case when Ergebnis_Name = 'B' then 1 else 0 end) as Filer_B
FROM ( deine schon vorhandene Abfrage)
GROUP BY
Ergebnis_id

Die Ausgabe sollte etwa so ausschauen

Ergebniss_ID Filter_A Filter_B
10 2 0
11 0 3

hoffe ich konnte dir helfen.
 
Zuletzt bearbeitet von einem Moderator:
Zurück