PIVOT函数–行转列[通俗易懂]

PIVOT函数–行转列[通俗易懂]首先我们来看下PIVOT函数的英文翻译:pivot:v在枢轴上旋转(转动)首先声明下PIVOT函数的语法格式为:SELECT[字段1,2,3…]FROM[表名]–将从##TEST表中选出的一些字段作为原表。AS[原表别名]PIVOT([聚合函数]([原表字段1])FOR[原表字段2]IN([原表2值1],[原表字段2值2]…))AS[新表别名]下面以例子讲解PIVOT函数:1、首先建立一个全局临时表–建立一个全局临时表。…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

首先我们来看下PIVOT函数的英文翻译:

pivot:v 在枢轴上旋转(转动)

首先声明下PIVOT函数的语法格式为:

SELECT [字段1,2,3…] FROM [表名]    — 将从##TEST表中选出的一些字段作为原表。
AS [原表别名]
PIVOT( [聚合函数] ( [原表字段1] ) FOR [原表字段2] IN ( [原表2值1],[原表字段2值2]… ) ) AS [新表别名]

 

下面以例子讲解PIVOT函数:

1、首先建立一个全局临时表

-- 建立一个全局临时表。临时表还是挺好用的哈,不用写入数据库中,可以用来学习且不用切换数据库
CREATE TABLE ##TEST( 
	project VARCHAR(10), -- 课程 
	student VARCHAR(20), -- 学生
	score DECIMAL        -- 成绩
)
INSERT INTO ##TEST VALUES('语文','小林',85)
INSERT INTO ##TEST VALUES('语文','小龙',89)
INSERT INTO ##TEST VALUES('语文','小龙',98)
INSERT INTO ##TEST VALUES('数学','小林',95)
INSERT INTO ##TEST VALUES('数学','小龙',90)
INSERT INTO ##TEST VALUES('英语','小明',99)
INSERT INTO ##TEST VALUES('英语','小林',97)
INSERT INTO ##TEST VALUES('英语','小龙',98)

SELECT * FROM ##TEST 

Jetbrains全家桶1年46,售后保障稳定

结果如下:

PIVOT函数--行转列[通俗易懂]

然后我们写一个PIVOT用法,来看看它的效果:

SELECT * FROM ##TEST
AS p  -- 将选中的字段作为原表,对应的t表就是新表。
PIVOT(SUM(score) FOR project IN([语文],[数学],[英语])) AS t

PIVOT函数--行转列[通俗易懂]

可能一下看不懂,在本文的开头我们提到PIVOT的英文含义是在枢轴上旋转,上述sql语句中,直译过来就是原表p以project这个单元格作为枢轴,将project这一列逆时针旋转90度,并去重,原来project的行变成了新表t中的列。

这样可能还不能得到我们想要的结果:

你可能会疑问?为什么会出现聚合函数,我们知道,聚合函数是和GROUP BY一起使用的。这是因为除了PIVOT函数里出现的score和project字段外,原表p中的其他字段都将被GROUP BY,作为新表中的行,因为如此,使得PIVOT结果出现多行。

 

补充一点:临时表只能执行一次,会暂时存贮在内存中,要想删除临时表,执行DROP TABLE ##TEST,即可。

 

 

 

 

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

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

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

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

(0)
blank

相关推荐

  • 使用SAXReader所需jar包[通俗易懂]

    使用SAXReader所需jar包[通俗易懂]使用SAXReader需要两个jar包dom4j-1.6.1.jarjaxen-1.1-beta-6.jar记录一下链接:(1积分,有积分的可以支持一下,谢谢)https://download.csdn.net/download/weixin_42591674/10757944            …

  • dell服务器显示器fre,戴尔全新 Freesync 显示器,专门针对游戏玩家[通俗易懂]

    dell服务器显示器fre,戴尔全新 Freesync 显示器,专门针对游戏玩家[通俗易懂]戴尔拥有一对全新的Ultrasharp显示器,专门针对游戏玩家,对于那些重视整体速度和响应能力的人来说,它们可能是不久的将来理想的升级途径。运动刷新率高达155Hz,分辨率高达1440P,以及24英寸和27英寸面板的选项,有很多值得关注的新的,配备Freesync的显示器。但这会是如今最好的游戏显示器吗?戴尔2719DGF是一款27英寸TN面板显示器,其机箱外观干净,专…

  • 微信小程序—经纬度逆地址解析的实现「建议收藏」

    微信小程序—经纬度逆地址解析的实现「建议收藏」小ZXZ小

  • python爬取豆瓣电影榜单

    python爬取豆瓣电影榜单python爬取豆瓣电影榜单python爬取豆瓣电影榜单并保存到本地excel中,以后就不愁没片看了。目标确定我们想要抓取的电影的相关内容。抓取豆瓣top250电影的排名、电影名、评价(总结很到位)、评分、点评人数及电影的豆瓣页面。抓取各种电影类型的排行榜前100。编码省略需求到编码中间的繁文缛节,直接上手编码。(此处是最终编码)目标一使用BeautifulSoup解析页面查找元素。目标二调用接口处理返回的json数据。importrequestsimportopenpyx

  • shift键粘滞了怎么办_5shift后门清免疫

    shift键粘滞了怎么办_5shift后门清免疫1.简介沾滞键的目的是为了帮助那些按键有困难的人设计的

  • asp.net中Session小例子

    asp.net中Session小例子登录界面aspx代码如下:functionisempty(){vartxt_id=document.getElementById(“txt_userID”);if(txt_id.value==””){alert(“请输入用户名!”);

发表回复

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

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