Oracle 多行转多列,列值转为列名
前段时间做调查问卷,客户创建自定义问卷内容,包括题目和选项内容;
之后需要导出问卷明细,,,,麻烦来咯
于是到网上到处搜索,没有直接结果;于是又找各种相似的,,终于功夫不负有心人
然后最终自己写出来了,decode才是核心
废话不多说,看图
需求示例图表:
存储过程,嘿嘿:

1 create or replace procedure NAG_QUESTIONERSULT_EXP( 2 V_QID in number, 3 C_Title out sys_refcursor, 4 C_Data out sys_refcursor 5 ) 6 as 7 /* 8 导出调查问卷资答案数据 9 Auth:lzpong 2015/09/01 10 */ 11 cursor dusers is --列信息 12 select qss.qss_id,nvl(qss.qss_title,substr(qs.qs_title,0,20)) QSS_TITLE from nag_questions qs,nag_questionss qss 13 where qss.qss_qs_id=qs.qs_id and qs.qs_q_id=V_QID 14 order by qs.qs_order,qss.qss_order; 15 strSql varchar2(10000); 16 begin 17 for ur in dusers loop 18 strSql:=strSql||'wm_concat(decode(QR_QSS_ID,'''||ur.qss_id||''',QR_QSS_DES,null)) as "'||ur.qss_title||'",'; 19 end loop; 20 open C_Data for 21 'select QR_ID,QR_AGENTID,max(QR_CREATEDATE) QR_CREATEDATE,'|| 22 substr(strSql,0,length(strSql)-1) 23 ||'from ( 24 select QR_QS_ID,QR_QSS_ID QR_QSS_ID,''(√)''||QR_QSS_DES QR_QSS_DES, QR_CREATEDATE,QR_U_ID,QR_AGENTID,QR_ID 25 from nag_questionresult,nag_questions where qr_qs_id=qs_id and qs_q_id='||V_QID||' 26 order by QR_ID 27 ) 28 group by QR_ID,QR_AGENTID'; 29 open C_Title for 30 select q.q_id,q.q_title,q.q_des,qs.qs_id,qs.qs_title ,(select count(qss_id) from nag_questionss qss where qss.qss_qs_id=qs.qs_id) qs_cols 31 from nag_question q,nag_questions qs where q.q_id=qs.qs_q_id and q.q_id=V_QID 32 order by q.q_id,qs.qs_order; 33 end;
实际数据:
结果:
转载请注明来自:lzpong
URL:http://www.cnblogs.com/lzpong/p/4778022.html
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
原文链接:https://www.cnblogs.com/lzpong/p/4778022.html
--- auth:lzpong
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!