php列转行,PIVOT行转列,UNPIVOT列转行

PIVOT: 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合。 UNPIVOT 与 PIVOT 执行相反的操作,将表值表达式的列转换为列值。 无 USE AdventureWorks2008R2;GOSELECT VendorID, [250]

PIVOT:通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合。

UNPIVOT与PIVOT执行相反的操作,将表值表达式的列转换为列值。

USE AdventureWorks2008R2;

GO

SELECT VendorID, [250] AS Emp1, [251] AS Emp2, [256] AS Emp3, [257] AS Emp4, [260] AS Emp5

FROM

(SELECT PurchaseOrderID, EmployeeID, VendorID

FROM Purchasing.PurchaseOrderHeader) p

PIVOT

(

COUNT (PurchaseOrderID)

FOR EmployeeID IN

( [250], [251], [256], [257], [260] )

) AS pvt

ORDER BY pvt.VendorID;

--Create the table and insert values as portrayed in the previous example.

CREATE TABLE pvt (VendorID int, Emp1 int, Emp2 int,

Emp3 int, Emp4 int, Emp5 int);

GO

INSERT INTO pvt VALUES (1,4,3,5,4,4);

INSERT INTO pvt VALUES (2,4,1,5,5,5);

INSERT INTO pvt VALUES (3,4,3,5,4,4);

INSERT INTO pvt VALUES (4,4,2,5,5,4);

INSERT INTO pvt VALUES (5,5,1,5,5,5);

GO

--Unpivot the table.

SELECT VendorID, Employee, Orders

FROM

(SELECT VendorID, Emp1, Emp2, Emp3, Emp4, Emp5

FROM pvt) p

UNPIVOT

(Orders FOR Employee IN

(Emp1, Emp2, Emp3, Emp4, Emp5)

)AS unpvt;

GO

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

--行转列

select?id,name,

[1]?as?"一季度",

[2]?as?"二季度",

[3]?as?"三季度",

[4]?as?"四季度",

[5]?as?"5"

from

test

pivot

(

sum(profile)

for?quarter?in

([1],[2],[3],[4],[5])

)

as?pvt

create?table?test2(id?int,name?varchar(20),?Q1?int,?Q2?int,?Q3?int,?Q4?int)

insert?into?test2?values(1,'a',1000,2000,4000,5000)

insert?into?test2?values(2,'b',3000,3500,4200,5500)

select?*?from?test2

--列转行

select?id,name,quarter,profile

from

test2

unpivot

(

profile

for?quarter?in

([Q1],[Q2],[Q3],[Q4])

)?

as?unpvt

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值