weixin_38393054 2019-08-02 16:22 采纳率: 0%
浏览 1861

Oracle的listagg函数在group by中使用时提示标识符无效,用wm_concat可以,但想将连接符换成分号

SELECT A.PACK_NO,
(
/*-- plsql中执行时提示错误“ORA-00904:"A"."PACK_NO":标识符无效”
SELECT LISTAGG(ORDER_REMARK, '; ') WITHIN GROUP(ORDER BY ORDER_REMARK)
FROM (SELECT DISTINCT ORDER_REMARK
FROM T_BUSIS_PACKING_SLIP_DETAIL
WHERE PACK_NO = A.PACK_NO)*/

    /*PACK_NO  ORDER_REMARKS TOTAL_EXPORT_PRICE
    PN000008532  从2009年起订  9645
    PN000008500  从2012年起订购,从2014年起按长期订购,长期订单  从2013年起订 52356*/
    SELECT WM_CONCAT(DISTINCT TSD.ORDER_REMARK)
      FROM T_BUSIS_PACKING_SLIP_DETAIL TSD
     WHERE TSD.PACK_NO = A.PACK_NO) AS ORDER_REMARKS,
   (SELECT SUM(TSD.SETTLE_ACTURE_AMOUNT * TSD.PRO_NUM)
      FROM T_BUSIS_RELEASE_ORDER_DETAIL TRD
      JOIN T_BUSIS_PACKING_SLIP_DETAIL TSD
        ON TSD.RELEASE_DETAIL_ID = TRD.ID
     WHERE TSD.PACK_NO = A.PACK_NO
     GROUP BY TSD.PACK_NO) AS TOTAL_EXPORT_PRICE

FROM T_BUSIS_PACKING_SLIP A
WHERE A.PACK_NO IN ('PN000008532', 'PN000008500')
ORDER BY A.CUST_ACCT_CODE, A.PACK_NO ASC

/*
-- 单独摘出来执行可以
-- LISTAGG(ORDER_REMARK,';')WITHI
-- 从2012年起订购; 从2014年起按长期订购; 长期订单 从2013年起订
SELECT LISTAGG(ORDER_REMARK, '; ') WITHIN GROUP(ORDER BY ORDER_REMARK)
FROM (SELECT DISTINCT ORDER_REMARK
FROM T_BUSIS_PACKING_SLIP_DETAIL
WHERE PACK_NO = 'PN000008500')
*/

  • 写回答

1条回答 默认 最新

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器