暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

能用SQL查询实现数据透视表的效果吗?

米宏Office 2022-06-30
128

我的目标:让中国的大学生走出校门的那一刻就已经具备这些Office技能,让职场人士能高效使用Office软件为其服务。支持我,也为自己加油!


微语:不论面对怎样的世界,都要保持安闲适意的自我。


本节分享SQL中的交叉查询,即利用SQL查询实现数据透视表的效果。

数据源如下:


以上是订单表。

想通过查询显示的结果集为:


前面所有的小节中介绍的SQL查询基本都是结果集中的什么列对应的就是数据源中的什么列,最多就是对某列进行分组、求和、求平均、求最大值、求最小值、四舍五入,提取字段、设置显示格式等等,总之就是原来的列对应过来还是列。

今天这个案例中想要的效果是二维的格式,说白了和数据透视是一样的。

先看下具体的语句:
transform round(sum(订单金额),2) as 金额 
select 姓名 from [订单$] 
group by 姓名 
pivot 月份

什么意思呢?
对照数据透视表是最好理解的了。


首先我们要进行聚合的列是金额列,怎么个聚合法呢?是要进行求和并且四舍五入保留两位小数,同时希望给它起个名字叫金额,所以语句如下:
transform round(sum(订单金额),2) as 金额 

接下来考虑行字段里要放什么,直接用select写即可,同时我们要用行字段进行分组,所以有了:
transform round(sum(订单金额),2) as 金额 
select 姓名 from [订单$] 
group by 姓名 

最后结果集中想要把数据源中那一列横向显示,即:
pivot 月份

综合下就是完整的语句:
transform round(sum(订单金额),2) as 金额 
select 姓名 from [订单$] 
group by 姓名 
pivot 月份

思考:假如数据源中没有月份这一列,我们还能透视成案例中的效果吗?


语句如下:
transform round(sum(订单金额),2) as 金额 
select 姓名 from [订单$] 
group by 姓名 
pivot Format(日期,"m月")

本节知识点:
1、交叉查询的语法:
TRANSFROM aggfunction
SELECT statement
PIVOT pivotfield [ in (vlaue1 [,value2 [, …]] ) ]

预告:SQL总结

本节先分享到这里,祝大家每天都有进步。

50元即可加入下面的学习群
可以领取本套课程的课件
练习过程中有疑问可以问群主


打开以下公众号,点击,服务→云课堂

系统学习Office知识,

购买的课程包素材答疑哦!

↙点击“阅读原文进入米宏学院

文章转载自米宏Office,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论