SQL2005列轉行示例 使用unpivot

感謝網友TheGodOfGods (龍城飛將) 的幫助.

 

if object_id('tbData') is not null

drop table tbData

go

 

create table tbData([員工ID] int, [員工姓名] varchar(10),崗位工資 int,薪級工資 int,津貼 int,補貼 int,會費 int,年份 int,月份 int)

go

 

 insert into tbData select 1,'張三',200,230,300,100,123,2010,3

union all select 1,'張三',200,230,300,100,123,2010,4

union all select 2,'李四',300,340,300,100,120,2010,3

union all select 2,'李四',300,340,300,100,120,2010,4

 

if object_id('tbProjects') is not null

drop table tbProjects

 go

 

create table tbProjects([ID] int, 工資項目名稱 varchar(20))

 go

insert into tbProjects select 1,'崗位工資'

union all select 2,'薪級工資'

union all select 3,'津貼'

union all select 4,'補貼'

union all select 5,'會費'

go

 

select [員工ID],p.ID,金額,年份,月份 from tbData t

unpivot(金額 for 工資項目 in ([崗位工資],[薪級工資],[津貼],[補貼],[會費]))k

 join tbProjects p on k.工資項目=p.工資項目名稱

 

 /* 員工ID ID 金額 年份 月份 ----------- ----------- ----------- ----------- -----------

1 1 200 2010 3

1 2 230 2010 3

1 3 300 2010 3

1 4 100 2010 3

1 5 123 2010 3

1 1 200 2010 4

1 2 230 2010 4

1 3 300 2010 4

1 4 100 2010 4

1 5 123 2010 4

2 1 300 2010 3

2 2 340 2010 3

2 3 300 2010 3

2 4 100 2010 3

2 5 120 2010 3

2 1 300 2010 4

2 2 340 2010 4

2 3 300 2010 4

2 4 100 2010 4

2 5 120 2010 4

*/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章