多くの異なるディメンションで列を集計したいと考えています。私の問題にはGOUPING SETSが適切だと思いますが、GROUPING SETSから結果のテーブルを変換/再形成する方法がわかりません。
これは、GROUPING SETS を使用した私のクエリです。
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]
しかし、私が本当に必要としているのは、次のようなテーブルです。
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 をはるかに超えるため、クエリをハードコーディングすることはお勧めできません。グループ化セットまたは他の集計方法からテーブルを再形成して、目的のテーブルを取得する方法はありますか?
ありがとう!