Sto lavorando su una query che è abbastanza simile seguente:Il modo più semplice per eliminare NULL in SELECT DISTINCT?
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
Il risultato è, ovviamente,
a b
-------
A NULL
A B
B NULL
L'uscita desidero vedere in realtà è:
a b
-------
A B
B NULL
Cioè, se una colonna ha un valore in alcuni record ma non in altri, voglio buttare via la riga con NULL per quella colonna. Tuttavia, se una colonna ha un valore NULL per tutti i record, voglio conservare quello NULL.
Qual è il modo più semplice/elegante per eseguire questa operazione in una singola query?
Ho la sensazione che questo sarebbe semplice se non fossi esausto in un venerdì pomeriggio.
Può un valore della colonna 'a' avere più di un valore non nullo in' B'? Se è così, ti aspetti di ottenere entrambi i valori? –
Mi dispiace, sono appena tornato a questo oggi. Per tutti i record nel gruppo, ogni colonna è: 100% popolato con un singolo valore, 100% NULL o parzialmente popolato con un singolo valore e parzialmente NULL. Ad esempio: (1, 2, NULL), (1, 2, NULL), (1, NULL, NULL) dovrebbe ridurre a (1, 2, NULL). –