From 75b4c681dc5a204e837896331ef460f47ae96929 Mon Sep 17 00:00:00 2001 From: wintsa Date: Thu, 22 Aug 2024 15:46:36 +0800 Subject: [PATCH] =?UTF-8?q?'=E6=89=8B=E5=8A=A8=E6=89=A7=E8=A1=8Csql?= =?UTF-8?q?=E5=90=88=E5=B9=B67=E4=B8=AA=E5=85=B3=E8=81=94=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E4=B8=BA=E4=B8=80=E4=B8=AA'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 手动执行sql合并7个关联字段为一个.sql | 71 ++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 手动执行sql合并7个关联字段为一个.sql diff --git a/手动执行sql合并7个关联字段为一个.sql b/手动执行sql合并7个关联字段为一个.sql new file mode 100644 index 0000000..1e079f3 --- /dev/null +++ b/手动执行sql合并7个关联字段为一个.sql @@ -0,0 +1,71 @@ + + +MERGE INTO uf_WLHJMK a +USING ( + WITH tmp AS ( + SELECT id, TO_CHAR(glgc) AS glgc, TO_CHAR(glgcxxsjd) AS glgcxxsjd, TO_CHAR(glgcgc) AS glgcgc, TO_CHAR(glzbgl) AS glzbgl, TO_CHAR(glhtgl) AS glhtgl, TO_CHAR(gltbgl) AS gltbgl, TO_CHAR(glqtgl) AS glqtgl + FROM uf_WLHJMK +), +tmp2 AS ( + SELECT id, + NVL2(glgc, '58505_gcxx' || REGEXP_SUBSTR(glgc, '[^,]+', 1, LEVEL), '') AS wysb + FROM tmp + CONNECT BY REGEXP_SUBSTR(glgc, '[^,]+', 1, LEVEL) IS NOT NULL + AND PRIOR id = id + AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL + UNION ALL + SELECT id, + NVL2(glgcxxsjd, '58505_tree' || REGEXP_SUBSTR(glgcxxsjd, '[^,]+', 1, LEVEL), '') AS wysb + FROM tmp + CONNECT BY REGEXP_SUBSTR(glgcxxsjd, '[^,]+', 1, LEVEL) IS NOT NULL + AND PRIOR id = id + AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL + UNION ALL + SELECT id, + NVL2(glgcgc, '58505_gcgc' || REGEXP_SUBSTR(glgcgc, '[^,]+', 1, LEVEL), '') AS wysb + FROM tmp + CONNECT BY REGEXP_SUBSTR(glgcgc, '[^,]+', 1, LEVEL) IS NOT NULL + AND PRIOR id = id + AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL + UNION ALL + SELECT id, + NVL2(glzbgl, '58505_zb' || REGEXP_SUBSTR(glzbgl, '[^,]+', 1, LEVEL), '') AS wysb + FROM tmp + CONNECT BY REGEXP_SUBSTR(glzbgl, '[^,]+', 1, LEVEL) IS NOT NULL + AND PRIOR id = id + AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL + UNION ALL + SELECT id, + NVL2(glhtgl, '58505_ht' || REGEXP_SUBSTR(glhtgl, '[^,]+', 1, LEVEL), '') AS wysb + FROM tmp + CONNECT BY REGEXP_SUBSTR(glhtgl, '[^,]+', 1, LEVEL) IS NOT NULL + AND PRIOR id = id + AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL + UNION ALL + SELECT id, + NVL2(gltbgl, '58505_tb' || REGEXP_SUBSTR(gltbgl, '[^,]+', 1, LEVEL), '') AS wysb + FROM tmp + CONNECT BY REGEXP_SUBSTR(gltbgl, '[^,]+', 1, LEVEL) IS NOT NULL + AND PRIOR id = id + AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL + UNION ALL + SELECT id, + NVL2(glqtgl, '58505_qt' || REGEXP_SUBSTR(glqtgl, '[^,]+', 1, LEVEL), '') AS wysb + FROM tmp + CONNECT BY REGEXP_SUBSTR(glqtgl, '[^,]+', 1, LEVEL) IS NOT NULL + AND PRIOR id = id + AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL +), +tmp3 AS ( + SELECT id, + LISTAGG(wysb, ',') WITHIN GROUP (ORDER BY wysb) AS wysb + FROM tmp2 + WHERE wysb IS NOT NULL + GROUP BY id +) +select * from tmp3 +) b +ON (a.id = b.id) +WHEN MATCHED THEN + UPDATE SET a.glgcshb = b.wysb +