【问题标题】:Straddle Query Results Instead of Stacking Duplicate Values跨越查询结果而不是堆叠重复值
【发布时间】:2015-01-26 16:23:33
【问题描述】:

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

我的问题是我们公司通常有多个“订单文本”字段,这使我的查询返回第二条记录(堆叠),其中包含除其他“订单文本”之外的所有重复数据(订单 ID、订单金额),这是不同的文本。

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

假设您不能以任何方式创建额外的表或操作数据库。一如既往,非常感谢任何帮助!

【问题讨论】:

  • 与 mustaccio 不同,Telkarion 提出了使用 LISTAGG() 函数的建议。
  • 并非所有版本的 DB2 都具有 LISTAGG 功能。由于您没有发布您的帖子,因此我提供了最安全的选项,可以在任何地方使用。

标签: sql database db2 peoplesoft


【解决方案1】:

尝试像这样使用聚合函数 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 起可用)

【讨论】:

    猜你喜欢
    • 2019-04-04
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多