高手进来看一下....急,在线等。放100分啊!!!
数据库中有个以下的表:
表1:
日期/生产量 pro1 pro2 pro3 pro4
11月1日 20 30 40 50
11月2日 28 30 45 70
11月3日 15 16 20 30
11月4日 18 20 30 4
11月5日 12 13 14 19
表2:
pro1 电脑
pro2 电视
pro3 汽车
pro4 电话
现在要转为下面的表:
产品 11月1日 11月2日 11月3日 11月4日 11月5日
电脑
电视
汽车
电话
请问怎么转换?
------解决方案--------------------if object_id( 'pubs..表1 ') is not null
drop table 表1
go
create table 表1(日期 varchar(10),pro1 int,pro2 int,pro3 int,pro4 int)
insert into 表1(日期,pro1,pro2,pro3,pro4) values( '11月1日 ', 20, 30, 40, 50)
insert into 表1(日期,pro1,pro2,pro3,pro4) values( '11月2日 ', 28, 30, 45, 70)
insert into 表1(日期,pro1,pro2,pro3,pro4) values( '11月3日 ', 15, 16, 20, 30)
insert into 表1(日期,pro1,pro2,pro3,pro4) values( '11月4日 ', 18 , 20, 30, 4)
insert into 表1(日期,pro1,pro2,pro3,pro4) values( '11月5日 ', 12 , 13, 14, 19)
go
if object_id( 'pubs..表2 ') is not null
drop table 表2
go
create table 表2(col1 varchar(10),col2 varchar(10))
insert into 表2(col1,col2) values( 'pro1 ', '电脑 ')
insert into 表2(col1,col2) values( 'pro2 ', '电视 ')
insert into 表2(col1,col2) values( 'pro3 ', '汽车 ')
insert into 表2(col1,col2) values( 'pro4 ', '电话 ')
go
select 产品 ,
max(case when 日期 = '11月1日 ' then value else 0 end) as '11月1日 ',
max(case when 日期 = '11月2日 ' then value else 0 end) as '11月2日 ',
max(case when 日期 = '11月3日 ' then value else 0 end) as '11月3日 ',
max(case when 日期 = '11月4日 ' then value else 0 end) as '11月4日 ',
max(case when 日期 = '11月5日 ' then value else 0 end) as '11月5日 '
from
(
select 日期 , 产品 = '电脑 ' , pro1 as value from 表1
union all
select 日期 , 产品 = '电视 ' , pro2 as value from 表1
union all
select 日期 , 产品 = '汽车 ' , pro3 as value from 表1
union all
select 日期 , 产品 = '电话 '