グループ化セットに名前を付ける方法はありますか? 各グループ化セット ( https://www.postgresql.org/docs/devel/static/queries-table-expressions.htmlに従って明示的に定義またはロールアップまたはキューブで生成) について、何らかの形で名前を指定したいと思います結果列。これは、私がやろうとしていることの醜いインスタントデモです。名前は、グループ化された列のリストです。
select *, array_to_string(array_remove(array[case when "A" is null then null else 'A' end,
case when "B" is null then null else 'B' end,
case when "C" is null then null else 'C' end
],null),',') as grouping_set
from (values ('a','b','c'),
('aa','bb','cc'),
('aaa',null,'ccc')) as foo("A","B","C")
group by rollup(1,2,3);
A | B | C | grouping_set
-----+----+-----+--------------
a | b | c | A,B,C
a | b | | A,B
a | | | A
aa | bb | cc | A,B,C
aa | bb | | A,B
aa | | | A
aaa | | ccc | A,C <--------- should be A,B,C
aaa | | | A <--------- should be A,B
aaa | | | A
| | |
しかし、2 つの行に問題があることに注意してください。矢印でフラグが付けられています。どちらの行にも、グループ化に列 B が含まれていますが、これらのグループでは B が null であるため、名前には含まれていません。
これについてのアイデアやより良い方法はありますか?