问题描述
考虑:
我试图得到一个XML select语句,产生:
我似乎可以确定底部,但是正在努力在 标签中获取唯一的日期。
with data as (select 'MH' initials, to_date('01092019','ddmmyyyy') cal_date, 23 quantity from dual union all select 'MH' initials, to_date('02092019','ddmmyyyy') cal_date, 18 quantity from dual union all select 'MH' initials, to_date('03092019','ddmmyyyy') cal_date, 14 quantity from dual union all select 'RD' initials, to_date('01092019','ddmmyyyy') cal_date, 24 quantity from dual union all select 'RD' initials, to_date('02092019','ddmmyyyy') cal_date, 13 quantity from dual union all select 'RD' initials, to_date('03092019','ddmmyyyy') cal_date, 23 quantity from dual)复制
我试图得到一个XML select语句,产生:
1st Sep 2019 2nd Sep 2019 3rd Sep 2019 |
MH 23 | MH 18 | MH 14 | |
RD 24 | RD 13 | RD 23 | 复制
我似乎可以确定底部,但是正在努力在 标签中获取唯一的日期。
专家解答
这是一种解决方法:
-在子查询中格式化数据。还使用dense_rank为每个日期分配行号
-使用它来调整MH和RD组。排名将为您提供MH & RD的行/日期和列
-将这些汇总到您的XML中:
这假设每个日期都有一个MH & RD条目。如果没有,则需要根据最终文档中的显示方式进行调整。
-在子查询中格式化数据。还使用dense_rank为每个日期分配行号
-使用它来调整MH和RD组。排名将为您提供MH & RD的行/日期和列
-将这些汇总到您的XML中:
with data as ( select 'MH' initials, to_date('01092019','ddmmyyyy') cal_date, 23 quantity from dual union all select 'MH' initials, to_date('02092019','ddmmyyyy') cal_date, 18 quantity from dual union all select 'MH' initials, to_date('03092019','ddmmyyyy') cal_date, 14 quantity from dual union all select 'RD' initials, to_date('01092019','ddmmyyyy') cal_date, 24 quantity from dual union all select 'RD' initials, to_date('02092019','ddmmyyyy') cal_date, 13 quantity from dual union all select 'RD' initials, to_date('03092019','ddmmyyyy') cal_date, 23 quantity from dual ), vals as ( select to_char ( cal_date , ' dd Mon yyyy ' ) cal_date, initials || ' ' || quantity as cell, initials grp, dense_rank () over ( order by cal_date ) rk from data ), rws as ( select * from vals pivot ( min ( cell ) for grp in ( 'MH' mh, 'RD' rd ) ) ) select xmlelement ( "rows", xmlforest ( xmlagg ( xmlelement ( "column", cal_date ) order by rk ) as "head", xmlagg ( xmlelement ( "cell", mh ) order by rk ) as "row", xmlagg ( xmlelement ( "cell", rd ) order by rk ) as "row" ) ) x from rws;01 Sep 2019 02 Sep 2019 03 Sep 2019 |
MH 23 | MH 18 | MH 14 | |
RD 24 | RD 13 | RD 23 | 复制
这假设每个日期都有一个MH & RD条目。如果没有,则需要根据最终文档中的显示方式进行调整。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
805次阅读
2025-04-18 14:18:38
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
605次阅读
2025-04-20 10:07:02
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
552次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
542次阅读
2025-04-17 17:02:24
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
512次阅读
2025-04-22 00:20:37
一页概览:Oracle GoldenGate
甲骨文云技术
506次阅读
2025-04-30 12:17:56
火焰图--分析复杂SQL执行计划的利器
听见风的声音
476次阅读
2025-04-17 09:30:30
OR+DBLINK的关联SQL优化思路
布衣
387次阅读
2025-05-05 19:28:36
Oracle数据库Hint大全,31个使用案例,速来下载!
陈举超
372次阅读
2025-04-16 21:25:19
Oracle19C低版本一天遭遇两BUG(ORA-04031/ORA-00600)
潇湘秦
339次阅读
2025-04-16 17:05:16