2014-02-17 66 views
2

我是SQL服務器的新手,我試圖在單行中組合多行,但我無法做到這一點。任何人都可以幫我解決問題嗎?在單行中組合多行

輸入:

Id  |RED |BUY |BSW 
------------------------------------ 
1328  NULL NULL 0.05 
1328  NULL 0.06 NULL 
1328  0.01 NULL NULL 
1328  0.05 NULL NULL 
1329  NULL NULL 0.05 
1329  NULL 0.05 NULL 
1329  0.05 NULL NULL 

輸出

Id   |RED |BUY |BSW 
------------------------------------ 
1328  0.01 0.06 0.05 
1328  0.05 NUll NULL 
1329  0.05 0.05 0.05 

編輯數據,以便去除SUM()衝突。

+1

有隻(最多)一個爲每個列使用非NULL數據行?因爲那麼你可以只是'SUM(COALESCE(RED,0)),SUM(COALESCE(BUY,0)),...'和'GROUP BY Id'。 – CompuChip

+3

你應用了什麼邏輯並獲得了以下輸出?顯示你的SQL。 – Aditya

+0

我認爲給出的輸入不是完整的場景。顯示原始表格數據。 – KumarHarsh

回答

0

嘗試這樣

SELECT id, 
     Sum(Isnull(red, 0)) 
     OVER ( 
      partition BY id 
      ORDER BY id), 
     Sum(Isnull(buy, 0)) 
     OVER ( 
      partition BY id 
      ORDER BY id), 
     Sum(Isnull(bsw, 0)) 
     OVER ( 
      partition BY id 
      ORDER BY id) 
FROM Table1 
GROUP BY id 
+0

您的查詢發出錯誤.'snull函數需要2個參數。 ' –

+1

答案已更新... –

0

首先領域默認設置改爲零instread空的,將提高處理速度那就試試這個

SELECT id, 
     Sum((red, 0)) 
     OVER ( 
      partition BY id 
      ORDER BY id), 
     Sum((buy, 0)) 
     OVER ( 
      partition BY id 
      ORDER BY id), 
     Sum((bsw, 0)) 
     OVER ( 
      partition BY id 
      ORDER BY id) 
GROUP BY id