Joker
08-05-2008, 13:45
Hallo,
ich möchte mit
WHERE C1 IN (...)
mehrere Bedingungen überprüfen:
select v1
, case when v1 in ( TO_NUMBER(TO_CHAR(SYSDATE -365, 'YYYY') || '99'), --200799
, TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY') || '99') --200899
, (SELECT c1 --hier können dann auch mehrere Werte rauskommen, z.B. 201099 202099 usw.
FROM tabelle2
WHERE ...)
)
then 'XXX'
else 'YYY'
end
from tabelle1
Das geht aber nicht, weil:
[Oracle]ORA-01427: single-row subquery returns more than one row (0,12 secs)
Ist ja eigentlich auch klar, da die ersten beiden Statements "nebeneinader" geholt werden, die Ergebnisse des Selects aber "untereinander" sind.
Wie könnte ich es denn hinbekommen, dass die Ergebnisse des SELECT auch in der IN-Bedingung des Case verwendet werden können?
ich möchte mit
WHERE C1 IN (...)
mehrere Bedingungen überprüfen:
select v1
, case when v1 in ( TO_NUMBER(TO_CHAR(SYSDATE -365, 'YYYY') || '99'), --200799
, TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY') || '99') --200899
, (SELECT c1 --hier können dann auch mehrere Werte rauskommen, z.B. 201099 202099 usw.
FROM tabelle2
WHERE ...)
)
then 'XXX'
else 'YYY'
end
from tabelle1
Das geht aber nicht, weil:
[Oracle]ORA-01427: single-row subquery returns more than one row (0,12 secs)
Ist ja eigentlich auch klar, da die ersten beiden Statements "nebeneinader" geholt werden, die Ergebnisse des Selects aber "untereinander" sind.
Wie könnte ich es denn hinbekommen, dass die Ergebnisse des SELECT auch in der IN-Bedingung des Case verwendet werden können?