码农周末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 |
|