时间:2021-05-02
NOMONEYDAY
1231
1432
1-453
2421
2-102
2503
31008
为了符合阅读习惯,最终报表希望是如下格式:
NOMONTUETHR
12343-45
242-1050
3
------------------------
咱们一步步来实现:
1.运用DECODE转换行为列
SQL:
SELECT NO,
DECODE(DAY,1,MONEY,'') DAY1,
DECODE(DAY,2,MONEY,'') DAY2,
DECODE(DAY,3,MONEY,'') DAY3
FROM TEMP
结果:
NODAY1DAY2DAY3
123
143
1-45
242
2-10
250
3
2.按NO字段分组,并更改列名
SQL:
SELECT NO, MAX(DAY1) MON, MAX(DAY2) TUE, MAX(DAY3) THR
FROM (SELECT NO,
DECODE(DAY, 1, MONEY,'') DAY1,
DECODE(DAY, 2, MONEY,'') DAY2,
DECODE(DAY, 3, MONEY,'') DAY3
FROM TEMP)
GROUP BY NO;
结果:
NOMONTUETHR
12343-45
242-1050
3
------------------------
重难点归纳:
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;
结果如下(所有值为负与空值都被赋为0):
NOMONTUETHR
123430
242050
3000
2.列缺省值设置(DAY值为8的显示为'undefined')
SQL:
SELECT NO,MONEY,
DECODE(DAY,1,'MON',2,'TUE',3,'THR','undefined') DAY
FROM TEMP
结果:
NOMONEYDAY
123MON
143TUE
1-45THR
242MON
2-10TUE
250THR
3100undefined
3.行列转化在表单内数据量较大的情况下消耗较大
原因:
1.扫描目标数据时间开销大。
2.GROUP BY时,数据冗余带来的多行合并。
优点:
表结构稳定:DAY增加新值只需增加记录,无需新增新列!
下一页 decode()函數使用技巧声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在制作excel表格的过程中,有时需要进行行列转置,有的时候需要在单元格内进行文字方向调整,下面就为大家详细介绍一下,一起来学习吧! 行列转置 1、问题
以excel2010版本为例,表格转置的操作方法如下: 1、打开excel表格,有AB两列数据,将这两列数据转置成列; 2、首先全选这两列数据,然后点击复制
高级表格取选择任意行列的内容.版本2.支持库eGrid.程序集窗口程序集1.子程序__启动窗口_创建完毕高级表格1.置数据(1,1,#表格常量.文本型,“我”)
本文实例讲述了jQuery+CSS实现的table表格行列转置功能。分享给大家供大家参考,具体如下:先来看看运行效果:具体代码如下:www.jb51.netjQ
提到数组,大家都不陌生,什么是数组行列转置呢?其实也很简单,如下图所示,行列转置就是将数组元素的存放方式进行转换,原来保存在第一列的数据,将保持在新数组的第一行