2016-07-07 101 views
0

我寫了一個旋轉功能產生以下結果集:SQL服務器:扁平化PIVOT結果

Date  | User | Hour | Result | FIELD1 | FIELD2 | FIELD3 | FIELD4 | FIELD5 | FIELD6 
-----------------------------------------------------------------------------------------  
2015-06-23 | Pippo | 1 | OK | NULL | NULL | 10 | NULL | NULL | NULL 
2015-06-23 | Pippo | 1 | OK | NULL | 5  | NULL | NULL | NULL | NULL 
2015-06-23 | Pippo | 1 | OK | 1  | NULL | NULL | NULL | NULL | NULL 

有沒有一種方法,對於具有相同日期的行,用戶,小時,結果值聚合所有的字段列到一個如下:

2015-06-23 | Pippo | 1 | OK | 1  | 5  | 10 | NULL | NULL | NULL 

我已經試過GROUP BY(日期,用戶,小時,結果),但PIVOT操作者保持對分列,在任何領域#列同樣適用於MAX。

有什麼想法?

+0

用'select'包裝您的sql並進行聚合。 – Blank

回答

1

您可以使用您的PIVOT作爲一個子查詢和主查詢

SELECT  Date, User, Hour, Result, 
      SUM(ISNULL(Field1,0) Field1, 
      SUM(ISNULL(Field2,0) Field2, 
      ... 
FROM  ( SELECT ... 
       FROM ... 
       PIVOT ... 
      ) Subquery 
GROUP BY Date, User, Hour, Result 
+0

謝謝魯本斯,但我需要將FIELD#列分開。 – SimoneF

+1

@SimoneF認爲你的PIVOT結果是一張表;你怎麼能整合你的數據?在我的代碼片段中,我分開了「Field#」列。 –

+1

現在我明白了。謝謝。我做了或多或少的相同。我之前沒有得到的是我需要聚合,因此我需要SUM或MAX Field#s! – SimoneF

1

你要離開只有三列在你的子查詢鞏固你的結果。 PIVOT函數爲具有唯一ALL列的行生成行,不僅用於樞軸

+0

我想我很愚蠢,分心或兩者兼而有之。謝謝。使用外部查詢來限制我的PIVOT和GROUP BY結果的列做了個竅門。 – SimoneF