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

来源:asp之家 时间:2009-09-24 12:51:00 

NOMONEYDAY123114321-45324212-102250331008

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

NOMONTUETHR12343-45242-10503

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

咱们一步步来实现:

1.运用DECODE转换行为列

SQL:

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

结果:

NODAY1DAY2DAY31231431-452422-102503

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;

结果:

NOMONTUETHR12343-45242-10503

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

重难点归纳:

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):

NOMONTUETHR1234302420503000

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

SQL:

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

结果:

NOMONEYDAY123MON143TUE1-45THR242MON2-10TUE250THR3100undefined

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

原因:

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

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

优点:

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

标签:Oracle,表格
0
投稿

猜你喜欢

  • python修改文件内容的3种方法详解

    2021-07-27 10:19:36
  • 一篇文章弄懂MySQL查询语句的执行过程

    2024-01-23 20:26:05
  • oracle 服务启动,关闭脚本(windows系统下)

    2009-07-26 08:57:00
  • php实现的单一入口应用程序实例分析

    2023-11-22 08:00:26
  • Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法

    2024-04-30 10:21:38
  • Python爬虫破解登陆哔哩哔哩的方法

    2021-03-28 14:17:40
  • sql中count或sum为条件的查询示例(sql查询count)

    2024-01-16 04:05:02
  • pandas抽取行列数据的几种方法

    2022-06-19 09:32:16
  • MySQL字符集查看方法

    2010-12-14 15:14:00
  • python实现密码验证合格程序的思路详解

    2022-12-10 05:07:38
  • Python新建项目自动添加介绍和utf-8编码的方法

    2023-02-07 07:58:06
  • 基于Python词云分析政府工作报告关键词

    2022-12-23 12:01:21
  • vue组件与复用详解

    2024-04-09 10:46:57
  • Java通过MyBatis框架对MySQL数据进行增删查改的基本方法

    2024-01-17 10:27:12
  • python处理文本文件并生成指定格式的文件

    2021-05-16 15:43:42
  • Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)

    2023-11-17 11:00:43
  • python使用arcpy.mapping模块批量出图

    2021-03-12 04:28:15
  • Python的Django框架中的数据过滤功能

    2022-02-01 05:48:40
  • vue elementUI实现自定义正则规则验证

    2024-05-28 16:00:58
  • python scipy求解非线性方程的方法(fsolve/root)

    2022-01-06 15:46:00
  • asp之家 网络编程 m.aspxhome.com