2012-03-29 25 views
0

Nach einer Auswahlabfrage ich die folgende Tabelle haben:SQL Server verwenden Wählen Sie

id CN SN DC 
1 null null null 
1 1234 null 1245 
1 null 2536 null 
2 null null null 
2 null 2596 null 

ich machen möchte mit ausgewählten Befehl in SQL Server so etwas wie:

id CN SN DC 
1 1234 2536 1245 
2 null 2596 null 

Kann mir jemand helfen mit, dass, Bitte? Vielen Dank!

+0

Was sind die Regeln, die dieses Ergebnis produzieren würde? – Oded

Antwort

6

Angenommen, Sie den Maximalwert für jede Spalte zurückgegeben werden sollen:

select id, max(CN) as CN, max(SN) as SN, max(DC) as DC 
from MyTable 
group by id 
+0

@satish Der maximale Wert in der Spalte für diese 'ID'. Also für ID = 1, gibt es 2536, für ID = 2 gibt es 2596 zurück. – RedFilter

+0

Vielen Dank für Ihre Lösung .Es funktioniert !!! – Lavy

+0

Dann sollten Sie diese Antwort als Akzeptiert markieren. :) –

0

Ich bin mir nicht sicher, ob ich dieses Recht bin immer, aber Sie wollen 1 zusammen alles unter id hinzufügen (Spalten) und die Gleich für ID 2?

Select id, SUM(ISNULL(CN, 0)), SUM(ISNULL(SN, 0)), SUM(ISNULL(DC, 0)) FROM table 
Group by id 
0

Sie sind nicht sagen, was zu tun ist, wenn mehr als eine ‚CN‘, ‚SN‘ oder ‚DC‘ existiert auf einer ID, so gibt es viele Lösungen für Ihr Problem, zum Beispiel;

SELECT id, SUM(CN) CN, SUM(SN) SN, SUM(DC) DC 
FROM Table1 
GROUP BY id; 

und

SELECT id, MAX(CN) CN, MAX(SN) SN, MAX(DC) DC 
FROM Table1 
GROUP BY id; 

sind gleichermaßen richtig.

Demo here.

-1

Sie verwenden einen FULL OUTER JOIN, oder?

Wahrscheinlich möchten Sie nur die LINKE OUTER JOIN verwenden

+0

Können Sie also die 'LINKE OUTER JOIN'-Syntax anzeigen, die das gewünschte Ergebnis liefern würde? –

+0

Vergiss es ... die richtige Antwort benutzt die "group by" mit der max Aggregation Funktion – MrJames

Verwandte Themen