oracle行转列,列转行(不使用自定义函数及方法)

新系统改造涉及新旧系统的数据:

需要将

http://10.157.60.21/sgpssc_uds//FileController/downloadFile/sgpssc-1000-20220928-1653-0000083/spgsscApp.jpg,http://10.157.60.21/sgpssc_uds//FileController/downloadFile/sgpssc-1000-20220928-1653-0000081/spgsscApp.jpg

或者

sgpssc-1111-20231017-1353-0000012

或者

sgpssc-1111-20231017-1353-0000013,sgpssc-1111-20231017-1353-0000014

格式转换成[{"index":"sgpssc-1111-20231017-1353-0000012"},{"index":"sgpssc-1111-20231020-0936-0000005"}]格式。为了不影响老系统数据。

SELECT BZYHID,
           BZYHMC,
           (SELECT VALUE FROM PMCS_EX.T_INTERFACE_CODE WHERE TYPE = 'zzbd_khjb' AND CODE = YHJB) YHJB,
           YHJB YHJBID,
           ZRW.ZRWMC SSBDRW,
           ZRW.ZRWMC BDRW,
           ZBX,
           ZBY,
           DECODE(SFSC, '1', '否', '0', '是') SFSC,
           CJR,
           CJBM,
           TO_CHAR(CJRQ, 'YYYY-MM-DD HH24:MI:SS') CJRQ,
           ZRW.ZRW_ID SSBDRW_ID,
           BJ.YHDWBM,
           BJ.YHDWMC,
           BJ.PHOTO
      FROM (
SELECT distinct case
                  when LENGTH(AA.PHOTO) > 0 AND
                       instr(AA.PHOTO, 'sgpssc-') > 0 THEN '[' || LISTAGG('{"index":"' || AA.PHOTO || '"}', ',')  WITHIN GROUP(ORDER BY AA.YHDWMC, AA.PHOTO)
                   over(partition by AA.BZYHID,
                         AA.BZYHMC,
                         AA.YHJB,
                         AA.SSBDRW,
                         AA.ZBX,
                         AA.ZBY,
                         AA.SFSC,
                         AA.CJR,
                         AA.CJBM,
                         AA.CJRQ,
                         AA.GIS_ZBX,
                         AA.GIS_ZBY,
                         AA.SFZH,
                         AA.SSBDRW_ID,
                         AA.YHDWBM,
                         AA.YHDWMC) || ']'
                  WHEN LENGTH(AA.PHOTO) = 0 THEN
                   AA.PHOTO
                  WHEN instr(AA.PHOTO, 'sgpssc-') < 0 AND
                       instr(AA.PHOTO, ',') > 0 THEN
                   '[' || replace(AA.PHOTO, ',', '"},{"index":"') || ']'
                END PHOTO,
                AA.BZYHID,
                         AA.BZYHMC,
                         AA.YHJB,
                         AA.SSBDRW,
                         AA.ZBX,
                         AA.ZBY,
                         AA.SFSC,
                         AA.CJR,
                         AA.CJBM,
                         AA.CJRQ,
                         AA.GIS_ZBX,
                         AA.GIS_ZBY,
                         AA.SFZH,
                         AA.SSBDRW_ID,
                         AA.YHDWBM,
                         AA.YHDWMC
  FROM (SELECT DISTINCT A.PHOTO source_data,
                        SUBSTR(REGEXP_SUBSTR(A.PHOTO, '[^,]+', 1, LEVEL, 'i'),
                               INSTR(REGEXP_SUBSTR(A.PHOTO,
                                                   '[^,]+',
                                                   1,
                                                   LEVEL,
                                                   'i'),
                                     'sgpssc-'),
                               33) PHOTO,
                        A.BZYHID,
                         A.BZYHMC,
                         A.YHJB,
                         A.SSBDRW,
                         A.ZBX,
                         A.ZBY,
                         A.SFSC,
                         A.CJR,
                         A.CJBM,
                         A.CJRQ,
                         A.GIS_ZBX,
                         A.GIS_ZBY,
                         A.SFZH,
                         A.SSBDRW_ID,
                         A.YHDWBM,
                         A.YHDWMC
          FROM (SELECT * FROM PMCS_EX.T_ZZGD_BZYH_BJ T WHERE T.SFSC = '0') A
        CONNECT BY LEVEL <= LENGTH(A.PHOTO) -
                   LENGTH(REGEXP_REPLACE(A.PHOTO, ',', '')) + 1) aa
 GROUP BY AA.BZYHID,
                         AA.BZYHMC,
                         AA.YHJB,
                         AA.SSBDRW,
                         AA.ZBX,
                         AA.ZBY,
                         AA.SFSC,
                         AA.CJR,
                         AA.CJBM,
                         AA.CJRQ,
                         AA.GIS_ZBX,
                         AA.GIS_ZBY,
                         AA.SFZH,
                         AA.SSBDRW_ID,
                         AA.YHDWBM,
                         AA.YHDWMC,
                         AA.PHOTO
) BJ
      LEFT JOIN PMCS_EX.T_ZZGD_ZRW_BJ ZRW
        ON ZRW.ZRW_ID = BJ.SSBDRW_ID
     WHERE ZRW.ZRW_ID IS NOT NULL
       AND ZRW.SFSX IN ('0', '生效')

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值