Hallo liebe Community,
ich möchte in einer Daten der letzten drei vollen Monate darstellen. In der Tabelle gibt es auch eine Spalte "MONTH", in der zu den jeweiligen Datensätzen eben die Zahlen 1-12 stehen.
Weil das aber über den Jahreswechsel Problematisch wird, da ich ja auch noch Daten aus dem vorherigen und gleichzeitig aus dem aktuellen Jahr (z.b. will ich November, Dezember, Januar angezeigt bekommen, wenn ich ich Februar schaue) darstellen muss, hab ich mir gedacht, lös ich das über Case-Klauseln.
Da ich noch nie Case-Anweisungen gebraucht habe, habe ich mir jetzt mal angeschaut, wie das eigentlich geht. Dabei stellt sich mir zuerst schon die Frage, ob ich Case-Anweisungen auch in der where-Bedingung nutzen kann, und nicht nur in den Select-Anweisungen.
Ich hatte mir etwas in der Art vorgestellt:
(etc, ein paar Case-Bedingungen fehlen da schon noch, nur als Beispiel)
Natürlich funktioniert das so nicht.
Deshalb meine Frage:
1. Geht das an der Stelle überhaupt?
2. Wenn ja, was ist an dem Code falsch?
Viele Grüße,
Sonnfan
ich möchte in einer Daten der letzten drei vollen Monate darstellen. In der Tabelle gibt es auch eine Spalte "MONTH", in der zu den jeweiligen Datensätzen eben die Zahlen 1-12 stehen.
Weil das aber über den Jahreswechsel Problematisch wird, da ich ja auch noch Daten aus dem vorherigen und gleichzeitig aus dem aktuellen Jahr (z.b. will ich November, Dezember, Januar angezeigt bekommen, wenn ich ich Februar schaue) darstellen muss, hab ich mir gedacht, lös ich das über Case-Klauseln.
Da ich noch nie Case-Anweisungen gebraucht habe, habe ich mir jetzt mal angeschaut, wie das eigentlich geht. Dabei stellt sich mir zuerst schon die Frage, ob ich Case-Anweisungen auch in der where-Bedingung nutzen kann, und nicht nur in den Select-Anweisungen.
Ich hatte mir etwas in der Art vorgestellt:
Code:
SELECT ...
FROM ...
WHERE ...
AND
CASE to_char(add_months(trunc(sysdate,'MM'),-1),'MM')
WHEN '12'
THEN "YEAR" = to_char(add_months(trunc(sysdate,'MM'),-1),'YYYY') AND "MONTH" > '9'
WHEN '1'
THEN ("YEAR" = to_char(add_months(trunc(sysdate,'MM'),-1),'YYYY') AND "MONTH" > '10')
OR ("YEAR" = to_char(add_months(trunc(sysdate,'MM'),-0),'YYYY') AND "MONTH" = '1')
END
order by ...
Natürlich funktioniert das so nicht.
Deshalb meine Frage:
1. Geht das an der Stelle überhaupt?
2. Wenn ja, was ist an dem Code falsch?
Viele Grüße,
Sonnfan