Tach!
Name1,Name2, Name3, Straße, Land, Plz und Ort sollten nur aus der Tabelle Adressen_lief entnommen werden wenn der Wert der Spalte ADDR_ID in beiden Tabellen vorhanden ist.
Ansonsten sollten Sie aus der Tabelle Journal entnommen werden.
Ich würde das mit zwei Abfragen (verbunden mit UNION) lösen, einmal mit der einen Bedingung, und dann nochmal mit der anderen.
case JOURNAL.ZAHLART
when 4 then JOURNAL.BSUMME
END AS NN,
Es gibt IF(), das ist weniger umständlich zu notieren
Case ADRESSEN_LIEF.ADDR_ID
when > NULL then
Wann immer NULL in einem Ausdruck auftaucht, ist das Ergebnis NULL. Im booleschen Kontext wird das immer als false gewertet. Egal ob du nun > oder < oder = oder <> beziehungsweise != verwendest, die Bedingung ist nie erfüllt. Für Vergleiche mit NULL gibt es spezielle Operatoren, wie IS NULL oder NOT IS NULL.
ADRESSEN_LIEF.NAME1 AS NAME1,
ADRESSEN_LIEF.NAME2 AS NAME2,
ADRESSEN_LIEF.NAME3 AS NAME3,
ADRESSEN_LIEF.STRASSE AS STRASSE,
ADRESSEN_LIEF.LAND AS LAND,
ADRESSEN_LIEF.PLZ AS PLZ,
ADRESSEN_LIEF.ORT AS ORT,
END
Ein CASE kann immer nur einen Wert liefern, keine Armada aus Feldern. Wenn du das so machen wllst, musst du für jedes Feld einzeln etwas schreiben. Wenn du das so machen willst, schau dir dazu die Funktionen IFNULL() und COALESCE() an.
dedlfix.