LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SQL Server中的行列转换PIVOT/UNPIVOT

admin
2020年11月13日 8:51 本文热度 2959
在SQL Server 2000中,要想实现行列转换,必须综合利用聚合函数和动态SQL,具体实现起来需要一定的技巧,而在SQL Server 2005中,使用新引进的关键字PIVOT/UNPIVOT,则可以很容易的实现行列转换的需求。
PIVOT的用法:
首先创建测试表,然后插入测试数据
create table test(id int,name varchar(20),quarter int,profile int);
insert into test values(1,''a'',1,1000);
insert into test values(1,''a'',2,2000);
insert into test values(1,''a'',3,4000);
insert into test values(1,''a'',4,5000);
insert into test values(2,''b'',1,3000);
insert into test values(2,''b'',2,3500);
insert into test values(2,''b'',3,4200);
insert into test values(2,''b'',4,5500);
select * from test;

id name quarter profile
----------- -------------- ----------- -----------
1 a 1 1000
1 a 2 2000
1 a 3 4000
1 a 4 5000
2 b 1 3000
2 b 2 3500
2 b 3 4200
2 b 4 5500
(8 row(s) affected)

使用PIVOT将四个quarter的profile转换成横向显示:
select id,name,
        [1] as "一季度",
        [2] as "二季度",
        [3] as "三季度",
        [4] as "四季度"
from test
pivot(
                sum(profile)        for quarter in ([1],[2],[3],[4])
        )as pvt;
select * from test;

id name 一季度 二季度 三季度 四季度
-------- --------- ----------- -------- ------- -------
1 a 1000 2000 4000 5000
2 b 3000 3500 4200 5500
(2 row(s) affected)

UNPIVOT的用法:
首先建立测试表,然后插入测试数据
drop table test;
create table test(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int);
insert into test values(1,''a'',1000,2000,4000,5000);
insert into test values(2,''b'',3000,3500,4200,5500);
select * from test;

id name Q1 Q2 Q3 Q4
-------- ------- --------- --------- -------- --------
1 a 1000 2000 4000 5000
2 b 3000 3500 4200 5500
(2 row(s) affected)

使用UNPIVOT,将同一行中四个季度的列数据转换成四行数据:
select id,name,quarter,profile
from test
unpivot(
        profile for quarter in([Q1],[Q2],[Q3],[Q4])
        )as unpvt;
select * from test;

id name quarter profile
----------- ----------- ---------- -----------
1 a Q1 1000
1 a Q2 2000
1 a Q3 4000
1 a Q4 5000
2 b Q1 3000
2 b Q2 3500
2 b Q3 4200
2 b Q4 5500
(8 row(s) affected)

该文章在 2020/11/13 8:51:11 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved