(ORACLE) Frage zu DECODE

StefanV

Grünschnabel
Hallo.

Ich habe mal eine Frage zur Decode-Anweisung. Ich habe eine Tabelle in einer Oracle-Datenbank. In dieser Tabelle (Bestandteil einer GIS-Anwendung) gibt es u.a. die Spalten Material und Baujahr. Jetzt passiert es, dass manchmal das Material den Wert "unbe" (für unbekannt) hat.

Mein Problem ist, dass ich gerne, wenn die Bedingungen Material=unbe und Baujahr < 1965 zutreffen, das Material auf 'GG' geändert wird.

Ohne Berücksichtigung des Baujahrs funktioniert es sehr gut mit einer DECODE-Anweisung.

SELECT DECODE (MATERIAL,'unbe','GG',MATERIAL) AS NEUMATERIAL FROM STRANG

Doch wie bekomme ich die Bedingung mit dem Baujahr jetzt hin. Bin für jede Hilfe dankbar.

Gruß

Stefan Volkwein
 
Hallo!

Weshalb verwendest du nicht die CASE WHEN Anweisung? Damit kannst du alles machen, was DECODE auch kann UND die bist im SQL Standard.

Code:
SQL> select * from strang;

        ID MATERIAL      BAUJAHR
---------- ---------- ----------
         1 UNBE             1960
         2 bbb              1990
         3 unbe             1999

SQL> SELECT ID,
  2  CASE WHEN UPPER(material) LIKE '%UNBE%' AND BAUJAHR < 1965 THEN
  3  'GG' 
  4  ELSE MATERIAL
  5  END, BAUJAHR
  6  FROM strang;

        ID CASEWHENUP    BAUJAHR
---------- ---------- ----------
         1 GG               1960
         2 bbb              1990
         3 unbe             1999

Gruß Tom
 
Hallo Thomas.

Vielen Dank für die Antwort. Funktioniert einwandfrei. Ich hatte schonmal mit dem CASE "herumexperimentiert", aber einen Fehler drin. Und da dachte ich (ich greife über ein GIS-Programm auf Oracle zu, und da sind nicht alle SQL oder SQLplus-Befehle implementiert).

Aber jetzt funktioniert es einwandfrei. Habe zwar jetzt ein neues Problem, aber vielleicht melde ich mich dem dann auch nochmal ;o)
Vielen Dank und ein schönes Wochenende.

Gruß

Stefan Volkwein
 

Neue Beiträge

Zurück