在 PL/SQL 中合并行

Posted

技术标签:

【中文标题】在 PL/SQL 中合并行【英文标题】:Combine rows in PL/SQL 【发布时间】:2016-11-03 13:30:47 【问题描述】:

我使用 PL/SQL 来提取数据。我想知道如何组合这些行。可以看到,有些单元格没有数据,但实际上下一行有数据。

【问题讨论】:

meta.***.com/questions/285551/… 好的,请问如何使用html函数创建表格? 删除 img 并将表格示例作为纯文本发布。 【参考方案1】:

跳过你问问题的方式,这里是解决方案(它可能看起来很复杂,但它有效):

SELECT postcode, 
       replace(REGEXP_REPLACE(replace(LISTAGG(moved_in, '-') WITHIN GROUP (ORDER BY ROWNUM),'No Data Available',''),'([^-]*)(-\1)+($|-)', '\1\3'),'-','')     AS moved_in,
       replace(REGEXP_REPLACE(replace(LISTAGG(moved_out, '-') WITHIN GROUP (ORDER BY ROWNUM),'No Data Available',''),'([^-]*)(-\1)+($|-)', '\1\3'),'-','')    AS moved_out,
       replace(REGEXP_REPLACE(replace(LISTAGG(district, '-') WITHIN GROUP (ORDER BY ROWNUM),'No Data Available',''),'([^-]*)(-\1)+($|-)', '\1\3'),'-','')     AS district,
       replace(REGEXP_REPLACE(replace(LISTAGG(district_new, '-') WITHIN GROUP (ORDER BY ROWNUM),'No Data Available',''),'([^-]*)(-\1)+($|-)', '\1\3'),'-','') AS district_new,
       replace(REGEXP_REPLACE(replace(LISTAGG(country_code, '-') WITHIN GROUP (ORDER BY ROWNUM),'No Data Available',''),'([^-]*)(-\1)+($|-)', '\1\3'),'-','') AS country_code
FROM   test_tab
GROUP BY postcode;

给我输出:

POSTCODE |  MOVED_IN |  MOVED_OUT | DISTRICT    | DISTRICT_NEW | COUNTRY_CODE
-----------------------------------------------------------------------------
B23 6AD  |  16/11/04 |  16/11/04  | Birmingham  | Birmingham   | 00B23

我用这段代码创建了测试数据:

CREATE TABLE test_tab
(Postcode VARCHAR2(100),
Moved_in DATE,
Moved_out DATE,
District VARCHAR2(100),
District_New VARCHAR2(100),
Country_code VARCHAR2(100));

INSERT INTO test_tab VALUES ( 'B23 6AD', sysdate, SYSDATE, 'No Data Available', 'No Data Available', '00B23');
INSERT INTO test_tab VALUES ('B23 6AD', sysdate, SYSDATE, 'Birmingham', 'Birmingham', '00B23');
INSERT INTO test_tab VALUES ('B23 6AD', SYSDATE, SYSDATE, 'Birmingham', 'Birmingham', 'No Data Available');

【讨论】:

10 万条记录耗时。 也许你应该在你的表上使用一些索引或其他优化 - 你没有提供更多细节 - 无论如何这个答案是否给出了想要的结果? 没有。我正在寻找一种合并行的方法。某种独特的功能。您显示的内容需要太多手动输入。

以上是关于在 PL/SQL 中合并行的主要内容,如果未能解决你的问题,请参考以下文章

Pl/SQL - 提取文本并在重复时合并

有没有更快的方法在 oracle pl/sql 中每周对 120k 条记录执行合并?

PL/SQL 上机练习

HTMLHTML 表格 ③ ( 合并单元格 | 跨行合并 | 跨列合并 | 单元格合并顺序 | 跨行设置 rowspan 属性 | 跨列设置 colspan 属性 )

vscode,为什么不提示,跨行合并和跨列合并的单词

el-table 合并行