sqlserver pivot函数(oracle行列转换函数)

以学生表举个例子,展现学生的各门学科和成绩,我们先新建一张表:CreateTableStudents(Namevarchar(10),SubjectNvarchar(10),Scoreint)InsertintoStudentsSelect’Andy’,’Chiness’,round(60+40*rand(),0)UnionallSelect’Bur

大家好,又见面了,我是你们的朋友全栈君。

以学生表举个例子,展现学生的各门学科和成绩,我们先新建一张表(表中插入测试值的时候用到了rand取随机数,没用过的可以了解下–>
点击打开):
Create Table Students(Name varchar(10), Subject Nvarchar(10),Score int)  
Insert into Students  
Select 'Andy' ,'Chiness',round(60+40*rand(),0) Union all  
Select 'Burgess' ,'Chiness',round(60+40*rand(),0) Union all  
Select 'Ula' ,'Chiness',round(60+40*rand(),0) Union all  
Select 'Lily' ,'Chiness',round(60+40*rand(),0) Union all  
Select 'Demon' ,'Chiness',round(60+40*rand(),0) Union all  
Select 'Andy' ,'Math',round(60+40*rand(),0) Union all  
Select 'Burgess' ,'Math',round(60+40*rand(),0) Union all  
Select 'Ula' ,'Math',round(60+40*rand(),0) Union all  
Select 'Lily' ,'Math',round(60+40*rand(),0) Union all  
Select 'Demon' ,'Math',round(60+40*rand(),0) Union all    
Select 'Andy' ,'English',round(60+40*rand(),0) Union all  
Select 'Burgess' ,'English',round(60+40*rand(),0) Union all  
Select 'Ula' ,'English',round(60+40*rand(),0) Union all  
Select 'Lily' ,'English',round(60+40*rand(),0) Union all  
Select 'Demon' ,'English',round(60+40*rand(),0)
这张表的呈现形式如下:
sqlserver pivot函数(oracle行列转换函数)
通过行列转换函数:
SELECT * FROM Students
PIVOT(MAX(SCORE) FOR Subject IN(Chiness,Math,English) ) AS PVT
这边需要留意一下PIVOT函数使用的结构了,首先是写一个查询语句,然后是对这个查询结果集中的某一列的值进行了行列转换的操作(我这里是把学科这一列的值“语文、数学、英语”转换为列),其中还必须包含了一个聚集函数(聚集函数一共有5个,分别是:count、sum、max、min、avg,无论是用哪一个聚集函数都代表着不同的意义,我这里用的MAX,针对这里聚集函数的使用我在后面的篇章中有讲到–>
点击打开
呈现形式如下:
sqlserver pivot函数(oracle行列转换函数)
注:pivot函数前面接的一定是一条查询语句,我上面的这条例子查询语句比较简单,直接select * from 也就通过了,最终结果也没有报错,其实正规来讲,如果select 语句比较复杂,这种写法可能会报错的,下面有一种保险一点的写法:
SELECT * FROM (
–这里写复杂的sql查询语句
) a
PIVOT(–此次省略相关code) AS PVT
之前的例子可以这样写:
SELECT * FROM (
SELECT * FROM Students
) a
PIVOT(MAX(SCORE) FOR Subject IN(Chiness,Math,English) ) AS PVT

最终的执行结果是一样的!


和PIVOT相反的还有一个UNPIVOT行数,顾名思义,一个是“行转列”另一个就是“列转行”,好了,这个函数的使用方法我会在下一篇介绍~~


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/129288.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • ASP.NET使用AJAX应注意IIS有没有.ashx扩展

    ASP.NET使用AJAX应注意IIS有没有.ashx扩展

    2021年11月17日
  • MongoVUE_mongodb使用教程

    MongoVUE_mongodb使用教程 MongoVUE 是个比较好用的MongoDB客户端,需要注册,但是可以变成永久使用,一、基础操作  新增一个连接  进入的界面形如  二、进阶操作   1、查看所有数据,会有三种格式的观看方式,分别为树形,表格,bjosn,详情见1.12、查看特定的数据,使用的时候shell命令,需要一些基础的语法知识,详情见2.13、更新数据,…

  • java权限修饰符

    java权限修饰符

  • listagg 函数[通俗易懂]

    listagg 函数[通俗易懂]listagg函数–oracle11grelease2转载:http://xpchild.blog.163.com/blog/static/10180985920108485721969/本文描述了在oracle11grelease2版本中新增的listagg函数,listagg是一个实现字符串聚合的oracle内建函数。作为一种普遍的技术,网络上也有多种实现字符串聚合的方…

  • CSS样式表的使用

    CSS样式表的使用在用html5写网页的时候,结合CSS能够让页面更美观。由于只在做课程设计和实习的时候使用过,并没有系统的学习过,使得自己对于CSS的使用一直处于能用,但是容易弄混的阶段。为了弄清楚CSS样式表的使用,特地看书系统学习,现总结如下:CSS是通过选择器对不同的HTML标签进行控制,从而实现各种效果。常用的CSS选择器有标签选择器、类别选择器、id选择器。标签选择器的使用HTML网页是由很…

  • Enterprise Library 企业库「建议收藏」

    Enterprise Library 企业库「建议收藏」1.Enterprise Library企业库介绍    是微软模式与实践团队开的应用程序块    安装Enterprise Library      下载 www.misrosoft.com/en-us/download/details.aspx?id=15104      安装后目录结构

    2022年10月20日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号