SQL wenn mehrere Cases zutreffen?

2 Antworten

Ich habe eine Idee. Findest du sie gut, musst du dich selbst um eine Umsetzung bemühen.

Normalerweise hast du so etwas wie

case when bed1 then...
else case when bed2 then...
else ... 

Eventuell kannst du es so lösen, dass du den Bedingungen Werte zuweist und addierst und in einem separaten Feld die Summe abprüfst.

Pseudocode:

1*(bed1)+2*(bed2)+4*(bed3)... as ausw, 
(case ausw = 0 then 'Kein Fall'
 else case ausw = 1 then 'Fall 1'
 else case ausw = 2 then 'Fall 2'
 ...
 else 'Mehrere Fälle'
) as wert

Das setzt voraus, dass man sich auf berechnete Werte rückbeziehen kann und dass man bool in int casten kann. Musst du ausprobieren.

Woher ich das weiß:Berufserfahrung – Programmierer

Umschreibungen sind selten hilfreich ... besonders wenn es um etwas exaktes wie SQL-Statements geht. Show Code.

Woher ich das weiß:Hobby
HardcoreGoTFAN 
Fragesteller
 14.08.2023, 10:46

Ich hab hier mal eine abgespeckte Version:

CASE

WHEN Betriebsbereit=0

THEN "Nicht betriebsbereit"

WHEN Kalibrierstatus=0

THEN "Nicht Kalibriert"

ELSE "Unbekanntes Problem"

END AS Zustandsmeldung

Ich arbeite in der richtigen Anweisung mit Zeitintervallen und so, das sprengt den Textrahmen.

Wenn jetzt hier beides zutrifft, dann sollte einfach sowas kommen wie "Mehreres trifft zu"

Formulierung kommt dann natürlich noch anders, wenn die Anweisung funktioniert.

0
Ifm001  14.08.2023, 12:37
@HardcoreGoTFAN

Es kommt hier etwas auf den SQL-Dualekt an, aber überlicherweise werden die CASE es von oben nach unter abgearbeitet.

CASE
WHEN (Betriebsbereit = 0) AND (Kalibrierstatus = 0)
THEN "Weder betriebsbereit noch kalibriert"
WHEN Betriebsbereit=0
THEN "Nicht betriebsbereit"
WHEN Kalibrierstatus=0
THEN "Nicht Kalibriert"
ELSE "Unbekanntes Problem"
END AS Zustandsmeldung

Alternativ könntest Du das auch in mehreren CASE-Strukturen o. ä. behandeln und deren Ergebnis mit einer Zeichenketten-Verknüpfung zusammenführen.

1