SQLPLUS - Werte umwandeln im Select?

Hallo,

ich stehe irgendwie auf dem Schlauch; ich kann mich vage erinnern vor Jahren so etwas Ähnliches schon mal gemacht zu haben, aber mir fällt beim besten Willen der Befehl nicht ein.

Ausgangssituation:

Obstsorte | Farbcode
Apfel | 1
Birne | 2
Pflaume | 3

Gewünschte Ausgabe:

Obstsorte | Farbe
Apfel | Rot
Birne | Gelb
Pflaume | Lila

Das Problem ist, dass die Bedeutung von „1,2,3“ nirgends in einer Tabelle steht, so dass ich nicht über ein Join rankommen kann.
Ich will auch nicht die Tabelle ändern, nur anders als gespeichert select-en.

Ich suche also etwas derart:

select Obstsorte, umwandeln(Farbcode,1='Rot',2='Gelb', 3='Lila') Farbe
 from Frucht;

Danke für jede Hilfe,
Michael

Hi,

select Obstsorte, decode(Farbcode, 1,'Rot',2,'Gelb',3,'Lila','andere Farbe') as Farbe
 from Frucht;

(ungetestet)

HTH, muzel

Danke! (owt)

select Obstsorte, decode(Farbcode, 1,‚Rot‘,2,‚Gelb‘,3,‚Lila‘,‚andere Farbe‘) as Farbe from Frucht;

Jetzt wo Du’s sagst fällt’s mir wieder ein… :wink:

Hi!

select Obstsorte, decode(Farbcode,
1,‚Rot‘,2,‚Gelb‘,3,‚Lila‘,‚andere Farbe‘) as Farbe
from Frucht;

Pipifax - macht doch jeder :wink:

Vor kurzem (kann auch schon einige Jahre her sein) sah ich eine Lösung und braucht zugegebenermaßen einen zweiten Blick um festzustellen, dass der Entwickler dieses Codes kein decode kannte - umgewandelt auf diese Abfrage:

select a.obstsorte, nvl(b.farbe,'andere Farbe')
from frucht a,
(select 1 code,'Rot' farbe from dual
 union
 select 2 code,'Gelb' farbe from dual
 union
 select 3 code,'Lila' farbe from dual) b
where a.farbcode = b.code (+)

Ich find die Lösung elegant :smile:

Grüße,
Tomh