我使用查询返回产品&公司从一个表(一家公司可以生产2-3-n类型的产品)
我正在寻找一种方法来改变这样的结果
| X | A |
| X | B |
| Y | A |
| Z | B |
| Z | C |
| Z | D |
(其中X,Y,Z是公司& A,B,C,D是产品)
这样的事情
| X | A | B | |
| Y | A | | |
| Z | B | C | D |
答案 0 :(得分:0)
此查询将返回数组中每个公司的产品:
SELECT COMPANY, ARRAY_AGG(PRODUCT) FROM PRODUCTS GROUP BY COMPANY
您无法将数组转换为可变数量的列。但是你可以通过包装SELECT来获得固定数量的列:
SELECT COMPANY, AAA[1], AAA[2], AAA[3], AAA[4] FROM
(SELECT COMPANY, AA || ARRAY['', '', ''] AAA FROM
(SELECT COMPANY, ARRAY_AGG(PRODUCT) AA FROM PRODUCTS GROUP BY COMPANY))
聚合数组包含(1,n)个元素,因此如果要返回多个元素,则需要在末尾添加一些空元素。