2012-03-29 78 views
0

選擇查詢我下面的表格有後:使用SQL Server選擇

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

我想使SQL SERVER類似使用SELECT命令:

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

誰能幫我說,請? 謝謝!

+0

什麼是會產生這種結果的規則? – Oded 2012-03-29 15:14:23

回答

6

假設你要爲每列返回最大值:我不知道,如果我得到這個權利

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

@satish該「id」列的最大值。所以對於id = 1,它返回2536,對於id = 2,它返回2596. – RedFilter 2012-03-29 15:21:31

+0

謝謝你的解決方案。它的工作原理! – Lavy 2012-03-29 15:24:50

+0

然後,您應該將此答案標記爲已接受。 :) – 2012-03-29 15:42:00

0

,但你要添加在ID 1一起一切(列)和id 2相同?

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

你不告訴做什麼時,不止一個「CN」,「SN」或「DC」存在於一個ID,所以有您的問題,許多解決方案,例如:

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

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

都同樣正確。

演示here

-1

您使用的是FULL OUTER JOIN,對不對?

也許你想只是使用左外部聯接

+0

那麼你可以顯示'LEFT OUTER JOIN'語法,將產生所需的結果? – 2012-03-29 15:48:29

+0

忘記它......正確的答案是使用「group by」和最大聚合函數 – MrJames 2012-03-29 19:20:44