2017-01-09 8 views
2

Ich habe eine Tabelle, die das folgende enthält und ich suche, sie zu gruppieren, um die folgende Ausgabe zu erhalten. Ist es möglich?Mehrere Reihen zusammen gruppieren

Eingang

ID Value1 Value2 Value3 
5  Y   NULL  NULL 
5  NULL  1   NULL 
5  NULL  NULL  USA 
5  NULL  NULL  NULL 
6  N   NULL  NULL 
6  NULL  2   NULL 
6  NULL  NULL  GBP 
6  NULL  NULL  NULL 

Ausgabe

ID  Value1  Value2  Value3 
5  Y   1   USA 
6  N   2   GBP 
+1

Veröffentlichen Sie die ursprüngliche Abfrage, die dieses Ergebnis produziert, können wir das beheben. Für jetzt einfaches 'Group by' und' Min/Max' Aggregat können Sie Ihr Ergebnis erhalten –

Antwort

6

Gruppe durch die id und verwenden max() die Nicht-Null-Wert für jede Gruppe zu erhalten

select id, 
     max(value1) as value1, 
     max(value2) as value2, 
     max(value3) as value3 
from your_table 
group by id 

BTW sollten Sie denken über das Ändern Sie Tischdesign. Es ist nicht normalisiert.

+0

Sie können auch PIVOT verwenden, aber ich bevorzuge diese Old-School-Ansatz auch. –

+0

Und diese Abfrage funktioniert für alle DB-Engines. –

Verwandte Themen