跨越查询结果而不是堆叠重复值

时间:2015-01-26 16:23:34

标签: sql database db2 peoplesoft

为了简单起见,我的查询字段是:ORDER ID,ORDER AMOUNT和ORDER TEXT。

我的问题是我们公司通常有多个'ORDER TEXT'字段,这使得我的查询返回第二条记录(Stacked),其中包含所有重复数据(ORDER ID,ORDER AMOUNT),除了其他'ORDER TEXT',这是不同的文字。

是否可以将第二个“ORDER TEXT”字段放在第一个“ORDER TEXT”字段(Straddled)旁边,或者甚至将两者连接成DB2中的一个长“ORDER TEXT”字符串?

Example of what is currently happening and what I want to happen

假设您无法以任何方式创建其他表或操作数据库。一如既往,非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

尝试使用聚合函数LISTAGG,如下所示:

SELECT ORDER_ID, ORDER_AMOUNT,
     LISTAGG(ORDER_TEXT, ', ') WITHIN GROUP(ORDER BY ORDER_TEXT)
     AS orders
  FROM PS_PO_HDR
  GROUP BY ORDER_ID, ORDER_AMOUNT

只需将表名替换为您正在使用的表名。

有关可用功能的详细信息here(自版本9.7.4起可用)