有没有办法命名分组集?对于每个分组集(根据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
| | |
但请注意,用箭头标记的两行存在问题:这两行都在分组中包含列 B,但在名称中不包含列,因为 B 在这些组中为空。
有什么想法或更好的方法来解决这个问题吗?