SQL server: PIVOT Ergebnis platzieren

Eine PIVOT-function, die ich geschrieben habe, erzeugt die folgende Ergebnismenge:

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 

Gibt es einen path, für die Zeilen mit den gleichen dates-, User-, Stunden-, Ergebnis-Werten, um alle FELD-Spalten zu einem wie folgt zusammenzufassen:

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

Ich habe versucht, GROUP BY on (date, Benutzer, Stunde, Ergebnis), aber der PIVOT-Operator hält auf Disaggregation, das gleiche gilt für MAX über eine der FELD # Spalten.

Irgendeine Idee?

Sie können Ihren PIVOT als Subselect verwenden und Ihre Ergebnisse auf der Hauptabfrage konsolidieren

 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 

Du musst nur drei Spalten in deiner Unterabfrage verlassen. Die PIVOT function macht Zeilen für Zeilen mit eindeutigen ALLE Spalten, die nicht nur im Pivot verwendet werden