2016-07-07 9 views
0

私が書いたPIVOT機能は、次の結果セットを生成します。同じ日付、ユーザー、時間、結果の値を持つ行がすべて集約するためSQL Serverの: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 

は方法は、あります以下のように一つにFIELD列:

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

私は(日付、ユーザー、時間、結果)にGROUP BYを試してみましたが、PIVOT演算子は脱凝集を続け、同じフィールド#列のいずれかの上でMAXのために保持しています。

+0

sqlを 'select'でラップして集計します。 – Blank

答えて

1

あなたは副選択としてあなたPIVOTを使用して、あなたのサブクエリに3つの列のみを残しているメインクエリ

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

今すぐ取得します。ありがとう。私は多かれ少なかれ同じことをしました。私が以前に得られなかったことは、私が集計する必要があることです。したがって、Field#sをSUMまたはMAXにする必要があります! – SimoneF

1

にあなたの結果を統合することができます。 PIVOT関数は、ピボットでのみ使用されるのではなく、一意のALL列を持つ行の行を作成します。

+0

私は馬鹿だと思います。ありがとう。結果を外部クエリで区切って、PIVOTとGROUPで列を制限することは、そのトリックでした。 – SimoneF