4

グループ化セットに名前を付ける方法はありますか? 各グループ化セット ( 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 であるため、名前には含まれていません。

これについてのアイデアやより良い方法はありますか?

4

2 に答える 2