我想在许多不同的维度上聚合一个列。我认为gouping集合适合我的问题,但是我不知道如何从分组集合转换/重塑结果表。
这是我使用分组集的查询:
select date, dim1, dim2, dim3, sum(value) as sum_value
from table
grouping by date, dim1, dim2, dim3
grouping sets ((date, dim1), (date, dim2), (date, dim3))
查询将生成如下表:
date dim1 dim2 dim3 sum_value
2017-01-01 A NULL NULL [value_A]
2017-01-01 B NULL NULL [value_B]
2017-01-01 NULL C NULL [value_C]
2017-01-01 NULL D NULL [value_D]
2017-01-01 NULL NULL E [value_E]
2017-01-01 NULL NULL F [value_F]
但我真正需要的是这样一张table:
date dim factor sum_value
2017-01-01 dim1 A [value_A]
2017-01-01 dim1 B [value_B]
2017-01-01 dim2 C [value_C]
2017-01-01 dim2 D [value_D]
2017-01-01 dim3 E [value_E]
2017-01-01 dim3 F [value_F]
实际的维度数远远超过3,因此硬编码查询不是一个好主意。有没有一种方法可以从分组集或其他聚合方法中重塑表以获得所需的表?
谢谢!
1条答案
按热度按时间2ul0zpep1#