SQL 服务器:展平 PIVOT 结果
SQL Server: flatten PIVOT result
我编写的 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。
有什么想法吗?
您可以将 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
您必须在子查询中只保留三列。
PIVOT
函数为具有唯一所有列的行创建行,不仅用于数据透视表
我编写的 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。
有什么想法吗?
您可以将 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
您必须在子查询中只保留三列。
PIVOT
函数为具有唯一所有列的行创建行,不仅用于数据透视表