create table t(分公司 varchar(20),产品类型 varchar(20),数据 int)
insert into t select '北京公司','山地车',111
insert into t select '北京公司','电动车',111
insert into t select '北京公司','普通车',111
insert into t select '南京公司','山地车',111
insert into t select '南京公司','电动车',111
insert into t select '南京公司','普通车',111declare @s varchar(8000)
set @s='select 分公司'
select @s=@s+','+产品类型+'=sum(case 产品类型 when '''+产品类型+''' then 数据 else 0 end )'
from t group by 产品类型 order by 产品类型
set @s=@s+' from t group by 分公司 order by 分公司'
exec(@s)/*
分公司 电动车 普通车 山地车
-------- ------ ------ --------
北京公司 111 111 111
南京公司 111 111 111
*/drop table t
insert into t select '北京公司','山地车',111
insert into t select '北京公司','电动车',111
insert into t select '北京公司','普通车',111
insert into t select '南京公司','山地车',111
insert into t select '南京公司','电动车',111
insert into t select '南京公司','普通车',111declare @s varchar(8000)
set @s='select 分公司'
select @s=@s+','+产品类型+'=sum(case 产品类型 when '''+产品类型+''' then 数据 else 0 end )'
from t group by 产品类型 order by 产品类型
set @s=@s+' from t group by 分公司 order by 分公司'
exec(@s)/*
分公司 电动车 普通车 山地车
-------- ------ ------ --------
北京公司 111 111 111
南京公司 111 111 111
*/drop table t
-------------------------------------------------------------------------------------------------------------------------
create table t(分公司 varchar(20),电动车 int,普通车 int,山地车 int)
insert into t select '北京公司',111,112,113
insert into t select '南京公司',101,102,103
insert into t select '上海公司',121,122,123declare @s varchar(8000)
set @s=''
select @s=@s+' union all select 分公司,产品类型='''+name+''',数据='+name+' from t '
from syscolumns where id=object_id('t') and name!='分公司' order by colid
set @s=stuff(@s,1,11,'')+' order by 分公司,产品类型'
exec(@s)/*
分公司 产品类型 数据
---------- -------- -----
北京公司 电动车 111
北京公司 普通车 112
北京公司 山地车 113
南京公司 电动车 101
南京公司 普通车 102
南京公司 山地车 103
上海公司 电动车 121
上海公司 普通车 122
上海公司 山地车 123
*/drop table t