kein Ergebnis mit SubSelect in ELSE Clause

thomar78

Benutzer
Beiträge
8
Ich habe folgende Abfrage. Die Tabelle tb1 enthält nur eindeutige Werte für die Kombination von "No" und "Period".

SELECT Period
FROM tb1
WHERE (No = '1996') AND (Period = (SELECT CASE WHEN EXISTS (SELECT Period FROM tb1 WHERE Period = 201611) THEN 201611 ELSE (SELECT MAX(Period) FROM tb1 WHERE (No = '1996') AND (Period < 201611)) END))

WENN ich in CASE WHEN EXISTS (SELECT...) einen Period Wert eingebe, welchen es tatsächlich in der Tabelle in Kombination mit der "No" gibt - funktioniert es

WENN ich einen Wert vorgebe den es nicht in Kombination mit "No" gibt, ist die Rückgabe nichts!

Den SubSelect der eigentlich in diesem Fall den höchsten Wert unterhalb des eigegebenen Wertes zurückgegeben soll funktioniert einwandfrei, wenn ich allein ausführe.

SELECT MAX(Period) FROM tb1 WHERE (No = '1996') AND (Period < 201611)
Ergebnis = 201610

Kann mir jemand sagen wo mein Fehler liegt?

Danke vorab...
 
Werbung:
Vermutlich gibt es den Period-Wert 201611 aber nicht in Kombination mit dem No-Wert 1996. Dann liefert dein CASE 201611 an den Hauptselect, der sucht aber wieder nach No=1996 und das gibt es ja nicht.

Alles in allem glaube ich der Select ist einfach Blödsinn, aber das kann ich nicht wissen. Wenn du hinter CASE WHEN EXISTS (SELECT...) einfach nur die Einschränkung No=1996 vergessen hast kannst du aber den ganzen Code auch stark kürzen ohne das sich die Bedeutung ändert.
 
Zurück
Oben