从Oracle表格行列转置说起第1/2页
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了从Oracle表格行列转置说起第1/2页,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1300字,纯文字阅读大概需要2分钟。
内容图文
![从Oracle表格行列转置说起第1/2页](/upload/InfoBanner/zyjiaocheng/541/388658d563854ad78f6401c3b6d5ff3b.jpg)
当你面对如下格式的一个表格:NO为人员的ID,MONEY是收入,DAY是星期(1代表星期一,7代表周日)。
为了符合阅读习惯,最终报表希望是如下格式:
------------------------
咱们一步步来实现:
1.运用DECODE转换行为列
SQL:
SELECT NO,
DECODE(DAY,1,MONEY,'') DAY1,
DECODE(DAY,2,MONEY,'') DAY2,
DECODE(DAY,3,MONEY,'') DAY3
FROM TEMP
结果:
2.按NO字段分组,并更改列名
SQL:
SELECT NO, MAX(DAY1) , MAX(DAY2) , MAX(DAY3)
FROM (SELECT NO,
DECODE(DAY, 1, MONEY,'') DAY1,
DECODE(DAY, 2, MONEY,'') DAY2,
DECODE(DAY, 3, MONEY,'') DAY3
FROM TEMP)
GROUP BY NO;
结果:
------------------------
重难点归纳:
1.DECODE缺省值设置
DECODE语法如下:decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
如果缺省值由''(两个单引号)改为0,即SQL:
SELECT NO, MAX(DAY1) MON, MAX(DAY2) TUE, MAX(DAY3) THR
FROM (SELECT NO,
DECODE(DAY, 1, MONEY,0) DAY1,
DECODE(DAY, 2, MONEY,0) DAY2,
DECODE(DAY, 3, MONEY,0) DAY3
FROM TEMP)
GROUP BY NO;
结果如下():
2.列缺省值设置(DAY值为8的显示为'undefined')
SQL:
SELECT NO,MONEY,
DECODE(DAY,1,'MON',2,'TUE',3,'THR','undefined') DAY
FROM TEMP
结果:
3.行列转化在表单内数据量较大的情况下消耗较大
原因:
1.扫描目标数据时间开销大。
2.GROUP BY时,数据冗余带来的多行合并。
优点:
下一页 decode()函數使用技巧内容总结
以上是互联网集市为您收集整理的从Oracle表格行列转置说起第1/2页全部内容,希望文章能够帮你解决从Oracle表格行列转置说起第1/2页所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。