【问题标题】:Sort out result from sql query从sql查询中排序结果
【发布时间】:2014-03-03 16:43:18
【问题描述】:

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

【问题讨论】:

  • 你应该看看PIVOT声明...
  • 你在处理什么样的 RDBMS 服务器?

标签: sql hsqldb


【解决方案1】:

这个查询会以数组的形式返回每家公司的产品:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2021-10-27
    相关资源
    最近更新 更多