在 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 中合并行的主要内容,如果未能解决你的问题,请参考以下文章
有没有更快的方法在 oracle pl/sql 中每周对 120k 条记录执行合并?
HTMLHTML 表格 ③ ( 合并单元格 | 跨行合并 | 跨列合并 | 单元格合并顺序 | 跨行设置 rowspan 属性 | 跨列设置 colspan 属性 )