db2 --> extra-Spalte erzeugen

oraclin25

Erfahrenes Mitglied
Hallo zusammen,

ich habe folgende Tabelle:

Code:
Name       Status       Menge       
-------------------------------------
Ratna        A                10
Kokakola     A                5
Patricia     D                18
Geist      (null)              3

Ich möchte gerne eine Extra-Spalte erzeugen. Das Ergebnis soll so aussehen:

Code:
Name       Status       Menge    Menge_extra   
-------------------------------------------------------
Ratna       A                10                  10 
Kokakola    A                 5                  5 
Patricia     D                18                 0
Geist      (null)             3                  0

Für die extra-Spalte sollen die Werte aus der Spalte Menge übernommen werden. Allerdings nur wenn der Status = 'A' ist. Bei allen anderen Status ist der Wert = 0

ich habe versucht, mit folgendem Ansatz zu erstellen:

Code:
select R.*, if R.Status = 'A' then R.Menge else '0' end if as Menge_extra
from meinSchema.meineTabelle R

Leider hat es nicht funktioniert:( Könnte mir jemand bitte helfen?

Schöne Grüße aus Rheinland,

Eure Ratna
 
Zuletzt bearbeitet:
Kenne selber db2 nicht. Da jedoch in den meisten SQL-Sprachen davür die CASE WHEN Struktur verwendet wird, habe ich kurz gegoogelt (wenn man weiss nach was suchen ists einfach *g*)
http://publib.boulder.ibm.com/infoc...10.doc.intro/src/tpc/db2z_caseexpressions.htm

Demzufolge könnte das so aussehen
SQL:
SELECT 
    r.*,
    CASE WHEN r.status = 'A' 
        THEN r.menge 
        ELSE 0 
    END AS Menge_extra
FROM 
    meinSchema.meineTabelle r

ps. Wenn r.menge Zaheln sind, dann solltest du 0 anstelle von '0' ausgeben.
 
Zuletzt bearbeitet von einem Moderator:
Hallo Yaslaw,

vielen Dank für die Hilfestellung.

Eine Frage dazu habe ich:
Generell, wenn man so etwas
Code:
ELSE 0
ausführt, welchen Datentyp nimmt eigentlich der DBMS für die Spalte? Besteht die Möglichkeit, dass man in dem Code einen bestimmten Datentyp wählt?

Vielen Dank.

Schöne Grüße aus Rheinland,
Eure Ratna:p
 
Wie gesagt. Ich kenne db2 nur vom Namen her. Darum kann ich es dir nicht genau sagen.
Aber in dem Fall hast du 0 als Integer. Die Spalte menge wird wahrscheinlich auch Integer oder sowas sein. Darum gehe ich davon aus dass db2 die Spalte dann als Integer ausgibt.
Das ändern von Typen nennt sich normalerweise CAST. Ob es sowas gibt?
Gemäss WWW gibts sowas bei db2:http://publib.boulder.ibm.com/infoc....jsp?topic=/com.ibm.db2.doc.sqlref/castsp.htm

SQL:
SELECT EMPNO, CAST(SALARY AS INTEGER) FROM EMPLOYEE;
 
Zurück