【SqlServer】行列倒置示例

【SqlServer】行列倒置示例,第1张

概述行列倒置是SqlServer中常用的技巧之一,不同于SqlServer2000用case拼接的方式,SqlServer2005提供pivot和unpivot关键字来实现这一技巧。 一.使用PIVOT进行行列倒置 create table RoleCellConvertDemo(id int,name varchar(20),quarter int,profile int)insert into

行列倒置是sqlServer中常用的技巧之一,不同于sqlServer2000用case拼接的方式,sqlServer2005提供pivot和unpivot关键字来实现这一技巧。

一.使用PIVOT进行行列倒置

@H_301_10@create table RoleCellConvertDemo(ID int,name varchar(20),quarter int,profile int)insert into RoleCellConvertDemo values(1,'a',1,1000)insert into RoleCellConvertDemo values(1,2,2000)insert into RoleCellConvertDemo values(1,3,4000)insert into RoleCellConvertDemo values(1,4,5000)insert into RoleCellConvertDemo values(2,'b',3000)insert into RoleCellConvertDemo values(2,3500)insert into RoleCellConvertDemo values(2,4200)insert into RoleCellConvertDemo values(2,5500)

表RoleCellConvertDemo中的数据如下:

利用pivot将每个季度的利润转换成横向显示:

select ID 编号,[name] 姓名,[1] 第一季度,[2] 第二季度,[3] 第三季度,[4] 第四季度from RowCellConvertDemopivot(sum(profile) for quarter in([1],[2],[3],[4]))as pvt

结果:

二.使用unpivot进行反向 *** 作

create table CellRowConvertDemo(ID int,name varchar(50),Q1 int,Q2 int,Q3 int,Q4 int)insert into CellRowConvertDemo values(1,1000,2000,4000,5000)insert into CellRowConvertDemo values(2,3000,3500,4200,5500)

CellRowConvertDemo数据:

利用unpivot进行反向 *** 作

select ID,[name],quarter,profilefrom CellRowConvertDemounpivot(profile for quarter in([Q1],[Q2],[Q3],[Q4]))as unpvt

结果:

总结

以上是内存溢出为你收集整理的【SqlServer】行列倒置示例全部内容,希望文章能够帮你解决【SqlServer】行列倒置示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1177285.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存