从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
投稿

猜你喜欢

  • CSS如何做细线表格

    2009-01-09 13:12:00
  • asp事务处理的另外一个方法

    2010-05-27 12:18:00
  • 一条sql 语句搞定数据库分页

    2009-03-21 18:32:00
  • 丰富段落里的标签

    2008-03-16 14:11:00
  • Web设计色彩速查表

    2009-12-21 16:24:00
  • 如何获取浏览器的更多信息?

    2009-11-23 20:48:00
  • 浅谈图表参数化设计

    2010-08-29 18:03:00
  • asp如何准确地获得一个整数?

    2010-07-07 12:25:00
  • 使用模板实现ASP代码与页面分离

    2008-09-12 16:07:00
  • 为google量身定做的sitemap生成代码asp版

    2011-04-06 10:43:00
  • asp中文URL编码server.urlencode

    2008-08-08 11:22:00
  • ASP在服务器自动解压RAR文件

    2010-04-24 16:06:00
  • asp如何远程注册DLL

    2010-06-16 09:58:00
  • 交互设计杂七杂八

    2010-09-25 18:41:00
  • 如何让新安装的MySQL数据库变得更安全

    2009-01-04 13:19:00
  • html风格tooltip效果的实现

    2010-04-08 13:00:00
  • oracle数据库添加或删除一列的sql语句

    2012-06-06 19:46:54
  • 在ASP中使用SQL语句之10:视图

    2007-08-11 13:24:00
  • 必须知道的10个不常用HTML标签[译]

    2009-03-31 13:19:00
  • ASP FSO生成静态htm页面简单代码

    2010-04-24 16:04:00
  • asp之家 网络编程 m.aspxhome.com