select * from Price
得到以下结果集
产品ID 产品名称 规格 地区 价格
1 产品1 1-1 北京 12
1 产品1 1-1 上海 13
1 产品1 1-1 广州 12
2 产品2 1-2 北京 22
2 产品2 1-2 上海 23
3 产品3 2-1 武汉 70请问如何得到这样的结果集呢?。。名称 产品1 产品2 产品3
规格 1-1 1-2 2-1
北京 12 22 -
上海 13 23 -
广州 12 - -
武汉 - - 70请大家帮下忙啊!!
得到以下结果集
产品ID 产品名称 规格 地区 价格
1 产品1 1-1 北京 12
1 产品1 1-1 上海 13
1 产品1 1-1 广州 12
2 产品2 1-2 北京 22
2 产品2 1-2 上海 23
3 产品3 2-1 武汉 70请问如何得到这样的结果集呢?。。名称 产品1 产品2 产品3
规格 1-1 1-2 2-1
北京 12 22 -
上海 13 23 -
广州 12 - -
武汉 - - 70请大家帮下忙啊!!
set @sql='select 地区[名称]'
select @sql=@sql+',['+ 产品名称 +']=max(case 产品名称 when '''+产品名称+''' then ltrim(价格) else '''' end)'
from (select distinct 产品名称 from price )a order by 产品名称
set @sql=@sql+' from price group by 地区'
declare @sql1 varchar(8000)
set @sql1='select ''规格''[名称]'
select @sql1=@sql1+',['+ 产品名称 +']=max(case 产品名称 when '''+产品名称+''' then 规格 else '''' end)'
from (select distinct 产品名称 from price )a order by 产品名称
set @sql1=@sql1+' from price'
exec(@sql1+' union all '+@sql)
create table #price
(
产品ID int,
产品名称 varchar(20),
规格 varchar(20),
地区 varchar(20),
价格 decimal(10,2)
)
insert into #price (产品ID,产品名称,规格,地区,价格)values(1,'产品','1-1','上海',12)
insert into #price (产品ID,产品名称,规格,地区,价格)values(1,'产品','1-1','北京',20)
insert into #price (产品ID,产品名称,规格,地区,价格)values(1,'产品','1-1','广州',32)
insert into #price (产品ID,产品名称,规格,地区,价格)values(2,'产品','2-1','上海',14)
insert into #price (产品ID,产品名称,规格,地区,价格)values(2,'产品','2-1','北京',42)
insert into #price (产品ID,产品名称,规格,地区,价格)values(3,'产品','3-1','北京',20)
insert into #price (产品ID,产品名称,规格,地区,价格)values(3,'产品','3-1','杭州',20)
select * from #price
drop table #price谢谢 背着灵魂漫步
你的代码可以 是我搞错了 如果产品名称是一样的就有问题 如何按产品ID来区分呢?
--那就:declare @sql varchar(8000)
declare @i int
set @i=1
set @sql='select 地区[名称]'
select @sql=@sql+',[产品'+ ltrim(@i) +']=max(case 产品id when '''+ltrim(产品id)+''' then ltrim(价格) else '''' end)',@i=@i+1
from (select distinct 产品id from price )a order by 产品id
set @sql=@sql+' from price group by 地区'
declare @sql1 varchar(8000)
set @i=1
set @sql1='select ''规格''[名称]'
select @sql1=@sql1+',[产品'+ ltrim(@i) +']=max(case 产品id when '''+ltrim(产品id) +''' then 规格 else '''' end)',@i=@i+1
from (select distinct 产品id from price )a order by 产品id
set @sql1=@sql1+' from price'
exec(@sql1+' union all '+@sql)