分享

SQL:pivot函数的简单用法,实现某列的值转为列名!

 hncdman 2022-11-01 发布于湖南

码农周末Moo

于 2021-09-28 10:07:07 发布

2858

 收藏 12

分类专栏: SQL SQL Server 文章标签: sql oracle

版权

华为云开发者联盟

该内容已被华为云开发者联盟社区收录,社区免费抽好礼🎁,最高可得Switch!

加入社区

SQL

同时被 2 个专栏收录

4 篇文章0 订阅

订阅专栏

SQL Server

3 篇文章0 订阅

订阅专栏

pivot语法:

SELECT a.值1 as 别名1,a.值2 as 别名2,a.值3 as 别名3,a.值... as 别名...,

FROM

    table_name  ---就是数据源

---开始使用函数

PIVOT

(

---这里可用聚合函数来统计

sum(要统计的列名)

FOR

--列名1就是要行转列的列名

列名1

IN ([值1],[值2],[值3],[...])---值1等来自列名1的值

) AS a  ---起个名字

--这里可接分组或排序

group by 列名

下面以某个表为例演示效果:

表testtable是一个记录学生考试次数及详情的表(说法不太正常,为了演示功能就先这么办了),里面有14条数据。

要求效果图如下,分别统计每位同学三科考试的次数。

实现语句如下:

select b.Name 姓名,count(b.语文) 语文,count(b.数学) 数学,count(b.英语) 英语 

from testtable 

pivot(

sum(Num) 

for subject 

in ([语文],[数学],[英语])

)  

as b 

group by b.Name

 这样就能直观看出,如,张三语文参加了两次语文考试,零次数学考试,两次英语考试。

如果列太多,或需要动态显示人名,可以看一下这篇文章。

SQL Server pivot 动态赋值https://blog.csdn.net/weixin_46348403/article/details/120527757

https://blog.csdn.net/weixin_46348403/article/details/120527757

————————————————

版权声明:本文为CSDN博主「码农周末Moo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_46348403/article/details/120522341

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多