oracle+行换列,Oracle的数据表中行转列与列转行的操作实例讲解

行转列一张表

7b6a994869fca657e02674d8929773cb.png

查询结果为

22ef7dfa152bff6f9699f3a9ffe923bc.png

--行转列

select years,(select amount from Tb_Amount as A where month=1 and A.years=Tb_Amount.years)as m1,

(select amount from Tb_Amount as A where month=2 and A.years=Tb_Amount.years)as m2,

(select amount from Tb_Amount as A where month=3 and A.years=Tb_Amount.years)as m3

from Tb_Amount group by years

或者为

select years as 年份,

sum(case when month='1' then amount end) as 一月,

sum(case when month='2' then amount end) as 二月,

sum(case when month='3' then amount end) as 三月

from dbo.Tb_Amount group by years order by years desc

2.人员信息表包括姓名 时代  金额

c7932349b01f24610886d976c51ace5b.png

显示行转列

姓名     时代       金额

姓名  年轻         中年       老年

张丽 1000000.00 4000000.00    500000000.00

孙子 2000000.00   12233335.00  4552220010.00

a4789e3ff43bf9c9cb649d05835971e1.png

select uname as 姓名,

SUM(case when era='年轻' then amount end) as 年轻,

SUM(case when era='中年' then amount end) as 中年,

SUM(case when era='老年' then amount end) as 老年

from Tb_People group by uname order by uname desc

3.学生表 [Tb_Student]

75d77d15753366436924c944baf772f9.png

显示效果

57f1545964d25ab2cd489da69ab63312.png

静态SQL,指subject只有语文、数学、英语这三门课程。

select sname as 姓名,

max(case Subject when '语文' then grade else 0 end) as 语文,

max(case Subject when '数学' then grade else 0 end) as 数学,

max(case Subject when '英语' then grade else 0 end) as 英语

from dbo.Tb_Student group by sname order by sname desc

--动态SQL,指subject不止语文、数学、英语这三门课程。

declare @sql varchar(8000)

set @sql = 'select sname as ' + '姓名'

select @sql = @sql + ' , max(case Subject when ''' + Subject + ''' then grade else 0 end) [' + Subject + ']'

from (select distinct Subject from Tb_Student) as a

set @sql = @sql + ' from Tb_Student group by sname order by sname desc'

exec(@sql)

oracle中Decode()函数使用 然后将这些累计求和(sum部分)

select t.sname AS 姓名,

sum(decode(t.subject,'语文',grade,null))语文 ,

sum(decode(t.subject,'数学',grade,null)) 数学,

sum(decode(t.subject,'英语',grade,null)) 英语

from Tb_Student t group by sname order by sname desc

列转行

06837f239c99e523435ae529b8d0658a.png

生成

2be7964fc2274b160ab623216e13b34f.png

sql代码

生成静态:

select *

from (select sname,[Course ] ='数学',[Score]=[数学] from Tb_students union all

select sname,[Course]='英语',[Score]=[英语] from Tb_students union all

select sname,[Course]='语文',[Score]=[语文] from Tb_students)t

order by sname,case [Course] when '语文' then 1 when '数学' then 2 when '英语' then 3 end

go

--列转行的静态方案:UNPIVOT,sql2005及以后版本

SELECT sname,Subject, grade

from dbo.Tb_students

unpivot(grade for Subject in([语文],[数学],[英语]))as up

GO

--列转行的动态方案:UNPIVOT,sql2005及以后版本

--因为行是动态所以这里就从INFORMATION_SCHEMA.COLUMNS视图中获取列来构造行,同样也使用了XML处理。

declare @s nvarchar(4000)

select @s=isnull(@s+',','')+quotename(Name)

from syscolumns where ID=object_id('Tb_students') and Name not in('sname')

order by Colid

exec('select sname,[Subject],[grade] from Tb_students unpivot ([grade] for [Subject] in('+@s+'))b')

go

select

sname,[Subject],[grade]

from

Tb_students

unpivot

([grade] for [Subject] in([数学],[英语],[语文]))b

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js十秒没有点击怎么判断_MAC口红怎么判断真假?没批号就没有生产日期,网友:品控太差...

一般来说,MAC的口红产品,底部都会有三位编码,这是该款口红的批号。因像MAC这类国外美妆护肤品牌,是不会将生产日期明确的标注在产品上,都是将其编码成批号,在标注在外包装或者产品的侧面、底部等边缘位置。…

go run main.go 参数_介绍一款Go项目热编译工具gowatch

使用场景在golang项目编写过程中,需要对项目不断的进行构建go build并调试以快速发现问题,而我们每次进行手动的进行go build又太重复,所以写了这么一个工具gowatch来实时的监听文件的改动并编译运行,大大提升开发效率。快速入门安…

安卓rpg绅士游戏资源_海贼无双3(动作游戏)——电脑安卓单机游戏下载资源分享...

点击上方蓝字关注我们01游戏简介:游戏名称:海贼无双3其它名称:One Piece - Pirate Warriors 3游戏类型:动作游戏开发发行:Omega Force游戏平台:PC整理时间:2020-04-25官方网址:http:…

11210怎么等于24_想要消耗100大卡热量,怎么做才最简单?

减肥,最根本的原理就是制造热量差,从饮食上限制热量的摄入,调理体质让基础代谢更高,运动来进一步增加消耗,当热量差达到7000大卡左右的时候,就能瘦下来1kg的纯脂肪!美食当前,自然要先…

连接linux工具Mtr,Linux常用网络工具:路由扫描之mtr

除了上一篇《Linux常用网络工具:路由扫描之traceroute》介绍的traceroute之外,一般Linux还内置了另一个常用的路由扫描工具mtr。mtr在某些方面比traceroute更好用,它可以实时显示经过的每一跳路由的信息,并不断进行探测。tracerou…

redis rua解决库存问题_【150期】面试官:Redis的各项功能解决了哪些问题?

点击上方“Java面试题精选”,关注公众号面试刷图,查缺补漏>>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅阶段汇总集合:一百期面试题汇总先看一下Redis是一个什…

启动盘Linux windows,Linux 中创建 USB 启动盘来拯救 Windows 用户

人们经常要求我帮助他们恢复被锁死或损坏的 Windows 电脑。有时,我可以使用 Linux USB 启动盘来挂载 Windows 分区,然后从损坏的系统中传输和备份文件。有的时候,客户丢失了他们的密码或以其他方式锁死了他们的登录账户凭证。解锁账户的一种方…

linux桌面版自动更新关闭了,桌面应用|开启 Ubuntu 系统自动升级

在学习如何开启Ubuntu系统自动升级之前,先解释下为什么需要自动升级。默认情况下,ubuntu每天一次检查更新。但是一周只会弹出一次软件升级提醒,除非当有安全性升级时,才会立即弹出。所以,如果你已经使用Ubuntu一段时间…

做自适应网站专业乐云seo_什么叫网站优化-网站建设-SEO优化

公司致力于企业品牌营销策划、网站建设、网站优化、五网竞价推广、商城建设、小程序开发、搜索引擎推广、SEO及企业品牌整合营销、全网整合营销霸屏推广等专业一站式网络全包服务。为不同企业品牌量身定制合适的设计方案,提供专业一站式网站服务平台、网络广告投放平…

跨域会报40几_关于跨域,以及跨域的几种方式

首先我们来想一想为什么会有跨域这个名词的出现呢?跨域又是什么呢?为何要跨域?浏览器的同源策略又是什么?怎么解决?jsonp又是什么?跨域的原理又是什么呢?名词解释:跨域:浏览器对于javascript的同源策略的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和…

linux用户的配置文件保存在哪里,使用配置文件(.settings、.config)存储应用程序配置...

引言我不知大家早先是如何保存应用程序配置,以备下次打开时使用的,反正我开始学.Net的时候就去研究序列化,以二进制或XML格式的序列化来保存应用程序配置。这样每次都要建立单独的配置类,并书写读写配置代码,相当麻烦。…

4列变成5列 datatable_云南美食界“5巨头”,谁才是NO.1?你家乡的那道菜也在列...

每个城市都有自己盛产的食材,最终也被制作成几代都传延至今的美食,这便是美食的传承。今天小编就来说说云南美食,下面这云南美食界“5巨头”,谁才是你心里的NO.1?你家乡的那道菜也在列哦~云南大理:白族泥鳅…

linux+基因组字符替换,liftover基因组版本直接的coordinate转换

下载地址:http://hgdownload.cse.ucsc.edu/admin/exe/使用方法:【从hg38转到hg19】因为主流的基因组版本还是hg19,但是时代在进步,已经有很多信息都是以hg38的形式公布出来的了。比如,我下载了pfam.df这个protein domain注释文件,…

elinput内容过长显示悬浮框_excel中一直被忽视的名称框,用好了也能提高效率

在excel左上角功能区下方,有一个名称框(下图红框中的部分)。大部分朋友应该没注意过这个地方有什么作用,或者仅仅知道名称框中会显示单元格的位置,因此在操作中这项功能无法表现出其真正的效果。本文就为大家介绍一下关于名称框的一些实用功能…

同步轨道进入过程_“收官之星”定点成功!北斗三号卫星全部进入长管模式

◎ 徐新芳 科技日报记者 付毅飞6月30日14时15分,北斗三号全球卫星导航系统最后一颗组网卫星成功定点于距离地面约36000公里的地球同步轨道,顺利进入长期运行管理模式。卫星有效载荷已完成开通,经过遥测数据判读,星载基准频率合成器…

将当前的head推送到远程_Git 通俗易懂系列 三、远程仓库和标签

远程仓库git remote :列出每个远程库的简短名字。如:origin。git remote -v :显示对应的克隆地址,如:originhttp://gitlab.xxx.corp/xxx.git 添加远程库:git remote add pb git://github.com/xxx.gitpb 指代对应的仓库…

linux中cv调用摄像头,ubuntu中opencv调用摄像头

ubuntu中opencv调用摄像头ubuntu中opencv调用摄像头文章目录一、Ubuntu中安装opencv二、关于Linux如何开启摄像头1.安装VMvareTools,这个是真的强,解决了很多常遇到的问题,比如Linux和Windows无法交互粘贴复制的问题。2.要保证Linux这边能开启…

为什么只有奇次谐波_关于开关电源谐波失真,这有一份测量分析方法经验分享!...

无论是从保护电力系统的安全还是从保护用电设备和人身的安全来看,严格控制并限定电流谐波含量,以减少谐波污染造成的危害已成为人们的共识。总谐波失真THD与功率因数 PF 的关系市面上很多的 LED 驱动电源,其输入电路采用简单的桥式整流器和电…

c语言程序设计平时作业代刷,C语言程序设计——小学生口算刷题系统

程序函数关系图函数功能及全局变量介绍代码中已有详细注释的地方不再进行解释。全局变量Cut( )函数此函数用于分割界面,使界面更为美观。Start( )函数此函数集成了开始菜单,年级的输入,为了营造一个快乐而刺激的刷题体验,程序与用…

机器人出魔切还是三相_工业机器人常见故障和修理方法

机械手常见故障和修理方法 1.先动口再动手对于有故障的电气设备,不应急于动手,应先询问产生故障的前后经过及故障现象。对于生疏的设备,还应先熟悉电路原理和结构特点,遵守相应规则。拆卸前要充分熟悉每个电气部件的功能、位置、连…