跨越查询结果而不是堆叠重复值
Straddle Query Results Instead of Stacking Duplicate Values
为简单起见,我的查询字段是:ORDER ID、ORDER AMOUNT 和 ORDER TEXT。
我的问题是我们公司通常有多个 'ORDER TEXT' 字段,这使我的查询 return 成为第二条记录(堆叠),其中包含所有重复数据(ORDER ID、ORDER AMOUNT),除了另一个 'ORDER TEXT',这是不同的文本。
是否可以将第二个 'ORDER TEXT' 字段放在第一个 'ORDER TEXT' 字段旁边(跨接)或者甚至将两者连接成 DB2 中的一个长 'ORDER TEXT' 字符串?
假设您无法创建额外的表或以任何方式操作数据库。一如既往,非常感谢您的帮助!
尝试像这样使用聚合函数 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
只需将 table 名称替换为您正在使用的名称即可。
可用功能的详细信息here(自版本 9.7.4 起可用)
为简单起见,我的查询字段是:ORDER ID、ORDER AMOUNT 和 ORDER TEXT。
我的问题是我们公司通常有多个 'ORDER TEXT' 字段,这使我的查询 return 成为第二条记录(堆叠),其中包含所有重复数据(ORDER ID、ORDER AMOUNT),除了另一个 'ORDER TEXT',这是不同的文本。
是否可以将第二个 'ORDER TEXT' 字段放在第一个 'ORDER TEXT' 字段旁边(跨接)或者甚至将两者连接成 DB2 中的一个长 'ORDER TEXT' 字符串?
假设您无法创建额外的表或以任何方式操作数据库。一如既往,非常感谢您的帮助!
尝试像这样使用聚合函数 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
只需将 table 名称替换为您正在使用的名称即可。
可用功能的详细信息here(自版本 9.7.4 起可用)