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请大家帮下忙啊!!

解决方案 »

  1.   

    laowan688  说的那样的我会啊 可是我老板要我搞成这样的没办法啊金城武还是很帅的谁有办法啊?
      

  2.   

    declare @sql varchar(8000)
    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)
      

  3.   


    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来区分呢?
      

  4.   


    --那就: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)