我写的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运算符一直在分解,对于任何FIELD#列,MAX也是如此。
有什么想法吗?
答案 0 :(得分: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
答案 1 :(得分:1)
您必须在子查询中只留下三列。
PIVOT
函数为具有唯一ALL列的行创建行,不仅用于pivot