SQL基础之pivot和unpivot

SQL基础之pivot和unpivot的用法

pivot用于行转列,unpivot用于列转行
一、pivot 的语法:
select   <non-pivoted column>,    --非透视列
[first pivoted column] as  <column name>,   --透视列
[second pivoted column] as <column name>,  
...
[last pivoted column] as  <column name>  
from table_name  
pivot(  <aggregation function> value_column)
     for  pivot_column  in  (<column_list>)as  <alias for pivot>    --别名
--<aggregation function>是聚合函数
-- value_column 要转换为 列值 的列名
-- pivot_column 指定要转换的列
-- column_list 透视列
)

示例:

表的定义如下:

create table [dbo].[DeptKPI](
    [MonthName] [nvarchar](10) NULL,
    [DeptName] [nvarchar](50) NULL,
    [KPIValue] [float] NULL
)

1.普通查询如下:

select * from  [dbo].[DeptKPI]

file
2.使用pivot进行行转列,把月份转换成列:

select * from [dbo].[DeptKPI] pivot ( sum(KPIValue) 
for MonthName in( 一月,二月,三月,四月,五月,六月)) as T

file
3.使用pivot行转列查询二月的数据:

select [DeptName] ,t.二月  from   [dbo].[DeptKPI] 
pivot ( sum(KPIValue) 
for MonthName in( 一月,二月,三月,四月,五月,六月)) as T

file

二、unpivot 的语法:
select  <columns not unpivoted>,       --非透视列
[unpivot_column],     --透视列
[value_column],   
from  table_name
unpivot ( [value_column] for [unpivot_column]  in  ( <column_list> ) ) 
as  <alias for unpivot>    --别名
     --[value_column]  确定一个列名称来代表不转换的列的数据。
     --[unpivot_column]  转换列的名称
     --<column_list>:  被转换的列的列名称。

1.普通查询如下:

select  *from (select * from [dbo].[DeptKPI] pivot ( sum(KPIValue) 
for MonthName in( 一月,二月,三月,四月,五月,六月)) as T) as tablename

file
2.用unpivot把月份转成行:

select  *from (select * from [dbo].[DeptKPI] pivot ( sum(KPIValue) 
for MonthName in( 一月,二月,三月,四月,五月,六月)) as T) as tablename
unpivot ( [KPIValue] for  MonthName  in(一月,二月,三月,四月,五月,六月))as B

在这里插入图片描述
如有错误欢迎指正
在这里插入图片描述
有兴趣的小伙伴可以关注“SQL数据库笔记”公众号,一起学习吧!
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值