PDA

View Full Version : Cast & when Syntax Frage



KingofKning
08-01-15, 14:46
Hallo *all,
nachdem die letzten Rakten im diesigen Himmel verschwunden sind, darf ich mich wieder meiner Lieblingsaufgabe stellen.

Erstelle gerade eine View wo ich in Abhängigkeit einen Wert anzeigen will.


cast(when test08 = 100 then 'I' else
when test08 = 200 then 'O' else
when test08 = 300 then 'A' else
when test08 = 400 then 'V else '*' end
as char(8) ccsid 273) as rubrik,

Irgendwie ist die Syntax nicht richtig.
Kann mir einmal bitte jemand auf die Sprünge helfen?

GG

BenderD
08-01-15, 14:56
... vielleicht so:
SELECT
cast(
case
when id = 100 then 'I'
when id = 200 then 'O'
when id = 300 then 'A'
when id = 400 then 'V'
else '*'
end as char(8) ccsid 273) as hugo
FROM dsternb1.covelenz

D*B

PS: eine Umsetzungstabelle dazu joinen ist wohl vorzuziehen.

KingofKning
08-01-15, 15:04
Danke für die Antwort, hat mir geholfen, bei 4 Möglichkeiten wäre die Tabelle die berühmte Kanonenkugel oder....


GG

Fuerchau
08-01-15, 18:28
Allerdings nicht, wenn der case-Ausdruck dann im Where wiederholt wird.

Für obiges gibt's eine Kurzform:

case ID
when 100 then 'I'
when 200 then 'O'
when 300 then 'A'
when 400 then 'V'
else '*'
end

Die obige Form ist sinnvoll wenn man andere Vergleiche als "=" benötigt.

BenderD
08-01-15, 19:13
... wenn man das in der Modellierung machen würde, käme immer eine Table dabei raus (und meist ist das auch performanter)...
@Abkürzung: ich habe keinen Bock mir mehrere Konstrukte zu merken und nehme eher die universellere Formulierung, für die Query Engine sollte das egal sein Ansonsten hat sie einen Schuss).

D*B