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...
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...