Der einfachste Weg, um NULL-Werte in SELECT DISTINCT zu eliminieren?

Ich arbeite an einer Abfrage, die der folgenden ziemlich ähnlich ist:

<code>CREATE TABLE #test (a char(1), b char(1))

INSERT INTO #test(a,b) VALUES 
('A',NULL),
('A','B'),
('B',NULL),
('B',NULL)

SELECT DISTINCT a,b FROM #test

DROP TABLE #test
</code>

Das Ergebnis ist, nicht überraschend,

<code>a   b
-------
A   NULL
A   B
B   NULL
</code>

Die Ausgabe, die ich in Wirklichkeit sehen möchte, ist:

<code>a   b
-------
A   B
B   NULL
</code>

Das heißt, wenn eine Spalte in einigen Datensätzen einen Wert hat, in anderen jedoch keinen, möchte ich die Zeile mit NULL für diese Spalte löschen. Wenn eine Spalte jedoch einen NULL-Wert für alle Datensätze enthält, möchte ich diesen NULL-Wert beibehalten.

Was ist der einfachste / eleganteste Weg, dies in einer einzelnen Abfrage zu tun?

Ich habe das Gefühl, dass dies einfach wäre, wenn ich an einem Freitagnachmittag nicht erschöpft wäre.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage