从sql查询中排序结果

时间:2014-03-03 16:43:19

标签: sql hsqldb

我使用查询返回产品&公司从一个表(一家公司可以生产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 |

1 个答案:

答案 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)个元素,因此如果要返回多个元素,则需要在末尾添加一些空元素。