• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 从Oracle 表格行列转置说起第1/2页

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

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了Oracle,表格行列转置等相关知识,希望本文的分享对您有所帮助

当你面对如下格式的一个表格: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()函數使用技巧
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 浅析drop user与delete from mysql.user的区别
  • mysql prompt的用法详解
  • 如何使用索引提高查询速度
  • 深入mysql创建自定义函数与存储过程的详解
  • JDBC数据库的使用操作总结
  • MySQL查询优化:LIMIT 1避免全表扫描提高查询效率
  • MySQL与Oracle的语法区别详细对比
  • 有关mysql中ROW_COUNT()的小例子
  • MySQL 百万级分页优化(Mysql千万级快速分页)
  • 从创建数据库到存储过程与用户自定义函数的小感

相关文章

  • 2017-05-11MYSQL之插入极限分析
  • 2018-12-05mysql升级后不能启动 的解决方法
  • 2018-12-05Access数据库的压缩与修复
  • 2018-12-05SQLServer 使用ADSI执行分布式查询ActiveDorectory对象
  • 2018-12-05SQL截取字符串函数分享
  • 2018-12-05详解mysql中url时区的陷阱该如何规避
  • 2018-12-05MariaDB体验之数据库安装的图文详解
  • 2017-05-11MySQL查询和修改auto_increment的方法
  • 2017-05-11MYSQL代码 定期备份Mysql数据库
  • 2017-05-11MYSQL IN 与 EXISTS 的优化示例介绍

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 如何向MySQL数据库或者Oracle或导入表格文件
    • SQLServer 2008 Merge语句的OUTPUT功能
    • 多表关联同时更新多条不同的记录方法分享
    • mysql中无限极分类的代码实现
    • 解析SQL计算timestamp的差值的方法
    • MySQL存储过程的使用、执行和创建教程
    • SQL语句的MINUS,INTERSECT和UNION ALL的解析
    • MySQL中optimize优化表_MySQL
    • mysql索引合并:一条sql可以使用多个索引
    • mysql的索引底层之实现原理

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有