主页 > 知识库 > 从Oracle 表格行列转置说起第1/2页

从Oracle 表格行列转置说起第1/2页

热门标签:北京外呼系统公司排名 贵阳智能电销机器人官网 沈阳400电话是如何办理 北京营销外呼系统厂家 外呼系统口号 外呼系统郑州 温州人工外呼系统 地图标注付款了怎么找不到了 百度地图标注员是干什么

NO MONEY DAY
1 23 1
1 43 2
1 -45 3
2 42 1
2 -10 2
2 50 3
3 100 8

为了符合阅读习惯,最终报表希望是如下格式:

NO MON TUE THR
1 23 43 -45
2 42 -10 50
3      

------------------------

咱们一步步来实现:

1.运用DECODE转换行为列

SQL:

SELECT NO,
    DECODE(DAY,1,MONEY,'') DAY1,
    DECODE(DAY,2,MONEY,'') DAY2,
    DECODE(DAY,3,MONEY,'') DAY3
FROM TEMP

结果:

NO DAY1 DAY2 DAY3
1 23
1 43
1 -45
2 42
2 -10
2 50
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;

结果:

NO MON TUE THR
1 23 43 -45
2 42 -10 50
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):

NO MON TUE THR
1 23 43 0
2 42 0 50
3 0 0 0

2.列缺省值设置(DAY值为8的显示为'undefined')

SQL:

SELECT NO,MONEY,
    DECODE(DAY,1,'MON',2,'TUE',3,'THR','undefined') DAY
FROM TEMP

结果:

NO MONEY DAY
1 23 MON
1 43 TUE
1 -45 THR
2 42 MON
2 -10 TUE
2 50 THR
3 100 undefined

3.行列转化在表单内数据量较大的情况下消耗较大

原因:

1.扫描目标数据时间开销大。

2.GROUP BY时,数据冗余带来的多行合并。

优点:

表结构稳定:DAY增加新值只需增加记录,无需新增新列!

下一页 decode()函數使用技巧
12下一页阅读全文
您可能感兴趣的文章:
  • Oracle实现行列转换的方法分析
  • Oracle的数据表中行转列与列转行的操作实例讲解
  • Oracle 数据库针对表主键列并发导致行级锁简单演示
  • oracle wm_concat 列转行 逗号分隔
  • Oracle逗号分隔列转行实现方法
  • Oracle CBO几种基本的查询转换详解
  • oracle中to_date详细用法示例(oracle日期格式转换)
  • 通过创建SQLServer 2005到 Oracle10g 的链接服务器实现异构数据库数据转换方案
  • MySQL转换Oracle的需要注意的七个事项
  • 将mysql转换到oracle必须了解的50件事
  • ORACLE常用数值函数、转换函数、字符串函数
  • Oracle实现行转换成列的方法

标签:包头 衢州 衡水 淮北 潮州 定西 通辽 温州

巨人网络通讯声明:本文标题《从Oracle 表格行列转置说起第1/2页》,本文关键词  从,Oracle,表格,行列,转置,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《从Oracle 表格行列转置说起第1/2页》相关的同类信息!
  • 本页收集关于从Oracle 表格行列转置说起第1/2页的相关信息资讯供网民参考!
  • 推荐文章