行转列,列转行的sql 语句

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

select * from test01

--行转列
select id,name,
[1] as "一季度",
[2] as "二季度",
[3] as "三季度",
[4] as "四季度",
[5] as "5"
from
test01
pivot
(
sum(profile)
for quarter in
([1],[2],[3],[4],[5])
)
as pvt


create table test02(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int)
insert into test02 values(1,'a',1000,2000,4000,5000)
insert into test02 values(2,'b',3000,3500,4200,5500)

select * from test02

--列转行
select id,name,quarter,profile
from
test02
unpivot
(
profile
for quarter in
([Q1],[Q2],[Q3],[Q4])
) 
as unpvt
posted @ 2010-08-19 08:12  Fandy Xie  Views(434)  Comments(0Edit  收藏  举报