最新活动:电脑PC端+手机端+微网站+自适应网页多模板选择-建站388元起价!!!
当前位置:主页 > 网站建设 > 从Oracle 表格行列转置说起第1/2页建站知识

从Oracle 表格行列转置说起第1/2页建站知识

时间:2023-05-22 19:05:22 阅读: 文章分类: 网站建设 作者: 建站小能手

导读:1建站知识当你面对如下格式的一个表格:NO为人员的ID,MONEY是收入,DAY是星期(1代表星期一,7代表周日)。网站建设网站建设公司。

网站建设网站建设公司

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,'') DAY3FROM 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, seo网站优化软件 DECODE(DAY,1,'MON',2,'TUE',3,'THR','unde百度seo网站优化fined') DAYFROM 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()函數使用技巧相关网站建设网站建设公司。

关键词标签: 表格 行列

声明: 本文由我的SEOUC技术文章主页发布于:2023-05-22 ,文章从Oracle 表格行列转置说起第1/2页建站知识主要讲述行列,表格,从Oracle 表格行列转置说起第1/2页建站网站建设源码以及服务器配置搭建相关技术文章。转载请保留链接: https://www.seouc.com/article/web_5095.html

我的IDC 网站建设技术SEOUC.COM
专注网站建设,SEO优化,小程序设计制作搭建开发定制网站等,数千家网站定制开发案例,网站推广技术服务。
  • 5000+合作客服
  • 8年从业经验
  • 150+覆盖行业
  • 最新热门源码技术文章