Mehrere Rückgabewerte in einem CASE-Statement? Alternativen?
am 28.07.2007 11:36:10 von busnetHi,
Ich hoffe, jemand hat eine Idee, wie ich das optimieren kann.
Ich habe eine eher complexe Abfrage mit einer Fallunterscheidung:
/-----
SELECT CASE
WHEN complexcalculations1 THEN returnvalue1
WHEN complexcalculations2 THEN returnvalue2
ELSE returnvalue3
END AS returnname
\-----
Das funtioniert auch hervorragend.
Nun möchte ich aber in jedem Entscheidungsfall 2 verschiedene Zeilen
zurückgeben, ich habe also folgendes probiert:
/-----
SELECT CASE
WHEN complexcalculations1 THEN returnvalue1a AS returnname_a,
returnvalue1b AS returnname_b
WHEN complexcalculations2 THEN returnvalue2a AS returnname_a,
returnvalue2b AS returnname_b
ELSE returnvalue3a AS returnname_a, returnvalue3b AS returnname_b
END
\-----
Das tut aber leider nicht. Ich könnte natürlich das Ergebnis über
folgendes Konstrukt erziehelen:
/-----
SELECT CASE
WHEN complexcalculations1 THEN returnvalue1a
WHEN complexcalculations2 THEN returnvalue2a
ELSE returnvalue3a
END AS returnname_a
CASE
WHEN complexcalculations1 THEN returnvalue1b
WHEN complexcalculations2 THEN returnvalue2b
ELSE returnvalue3b
END AS returnname_b
\-----
Aber eigentlich ist es ja unnötig, die complexcalculations zweimal für
die gleichen Werte auszuführen.
Hat jemand eine Idee?
Danke!