Verbinden von Spalten funktuioniert nicht richtig

16/07/2008 - 16:10 von lange.patrick | Report spam
Hallo Zusammen,

ich habe unten aufgeführtes SQL geschrieben.

Dieser soll in der Spalte "Maske" die zwei Spalten zu einer
zusammenfassen.
Ist nun eine der zwei Spalten NULL, so ist auch "Maske" NULL.
Ich möchte aber gerne, das dort die Spalte, die nicht NULL ist,
angezeigt wird.

Datentypen
Sppalte2 = nchar(7)
Kontenrahmen.Bezeichnung = nchar(7)

Wie kann ich dies realisieren?


Danke
Gruß Patrick


SELECT DISTINCT(Schluessel_dim.Kontenklasse) as
Spalte1,Schluessel_dim.Kontenklasse as Spalte2,
Kontenrahmen.Bezeichnung, '(' + Schluessel_dim.Kontenklasse + ') ' +
Kontenrahmen.Bezeichnung as Maske
FROM Schluessel_dim Left JOIN
Kontenrahmen ON Schluessel_dim.Vordruck Kontenrahmen.Vordruck AND Schluessel_dim.Kontenklasse Kontenrahmen.Kontonummer
WHERE Schluessel_dim.Vordruck= 'KM1'
UNION ALL
SELECT DISTINCT(Schluessel_dim.Kontengruppe) as
Spalte1,Schluessel_dim.Kontengruppe as Spalte2,
Kontenrahmen.Bezeichnung,'(' + Schluessel_dim.Kontengruppe + ') ' +
Kontenrahmen.Bezeichnung as Maske
FROM Schluessel_dim Left JOIN
Kontenrahmen ON Schluessel_dim.Vordruck Kontenrahmen.Vordruck AND Schluessel_dim.Kontengruppe Kontenrahmen.Kontonummer
WHERE Schluessel_dim.Vordruck= 'KM1'
UNION ALL
SELECT DISTINCT(Schluessel_dim.Kontenart) as
Spalte1,Schluessel_dim.Kontenart as Spalte2 ,
Kontenrahmen.Bezeichnung, '(' +Schluessel_dim.Kontenart + ') ' +
Kontenrahmen.Bezeichnung as Maske
FROM Schluessel_dim Left JOIN
Kontenrahmen ON Schluessel_dim.Vordruck Kontenrahmen.Vordruck AND Schluessel_dim.Kontenart Kontenrahmen.Kontonummer
WHERE Schluessel_dim.Vordruck= 'KM1'
ORDER BY Spalte1
 

Lesen sie die antworten

#1 Stefan Hoffmann
16/07/2008 - 16:32 | Warnen spam
hallo Patrick,

schrieb:
Ist nun eine der zwei Spalten NULL, so ist auch "Maske" NULL.
Ich möchte aber gerne, das dort die Spalte, die nicht NULL ist,
angezeigt wird.


Ja, weil irgendwas plus NULL einfach NULL ergibt.

Wie kann ich dies realisieren?


Mit COALESCE oder ISNULL:

COALESCE('(' + Schluessel_dim.Kontenklasse + ') ', '') +
Kontenrahmen.Bezeichnung as Maske

ISNULL('(' + Schluessel_dim.Kontenklasse + ') ', '') +
Kontenrahmen.Bezeichnung as Maske


mfG

Ähnliche fragen