0
点赞
收藏
分享

微信扫一扫

SQL实现列转行,并按照月份显示

Yaphets_巍 2022-01-24 阅读 68

SQL实现列转行,并按照月份显示

需求描述

有时候,我们需要把列的数据变成行的数据展示出来,就需要列转行了
如下表 test 月份和数量:我想把它变成展示月份和num的列数的这样一个表,如下

test:

mon num
08	0
08	0
09	0
09	0
09	0
09	0
09	0
09	0
09	0
09	0
09	0
09	0
10	0
10	0
10	0
10	0
10	0
10	0
10	0
10	0
11	0
11	0
10	0
10	0
11	0
11	0
11	0
11	0
11	0
11	0
11	0
11	0
11	0
11	0
11	0
11	0
11	0
11	0
11	0
11	0
11	0
11	0
11	0
11	0
11	0
11	0

转换后:

010203040506070809101112
000000021010240

解决办法

网上搜索了解决办法,主要包含两种一种是PIVOT语句,另一种是caseh when子句实现,而我是用第一种方法实现的,代码如下:

       SELECT * FROM test PIVOT 
       (
        COUNT(num) FOR mon IN('01','02','03','04','05','06','07','08','09','10','11','12')
        )

一些解释:

  1. from后面的可以一个表也可以是 select 语句查询出来的子表
  2. for前面要使用sum,count等等聚合函数
  3. in后面是你新排列的行,看了网上说要加[]但是我这里没有加也可以

结果:
在这里插入图片描述
参考:
https://blog.csdn.net/weixin_33969116/article/details/94509102
https://www.cnblogs.com/ljhdo/p/4995554.html

举报

相关推荐

0 条评论