select 商品编号,sum(case when 商品类型='1' then 商品数量 else 0 end ) 商品数量1 ,
sum(case when 商品类型='2' then 商品数量 else 0 end ) 商品数量2,
sum(case when 商品类型='3' then 商品数量 else 0 end ) 商品数量3
from table 
group by 商品编号

解决方案 »

  1.   

    select 商品编号,sum(case when 商品类型='1' then 商品数量 else 0 end ) 商品数量1 ,
    sum(case when 商品类型='2' then 商品数量 else 0 end ) 商品数量2,
    sum(case when 商品类型='3' then 商品数量 else 0 end ) 商品数量3
    from table 
    group by 商品编号
      

  2.   

    如果类型不确定,用动态SQL
    declare @sql varchar(8000)
    set @sql=''
    select @sql = @sql + ',sum(case when 商品类型='''+ 商品类型 +''' then 商品数量 else 0 end ) ' + '商品数量'+ 商品类型
     from  (select distinct 商品类型from table )aa
    exec('select  商品编号  '+ @sql + ' from table  group by 商品编号')
      

  3.   

    declare @sql varchar(8000)
    set @sql = 'select 商品编号,'
    select @sql = @sql + 'sum(case 商品类型 when '''+商品类型+''' 
                              then 商品数量 else 0 end) 商品数量'+a+','
      from (select distinct 商品类型 from 表) as aselect @sql = left(@sql,len(@sql)-1) + ' from 表 group by 商品类型'exec(@sql)
      

  4.   

    修改如下:
    declare @sql varchar(8000)
    set @sql=''
    select @sql = @sql + ',sum(case when 商品类型='''+ 商品类型 +''' then 商品数量 else 0 end ) ' + '商品数量'+ cast(商品类型 as varchar(10))
     from  (select distinct 商品类型from table )aa
    exec('select  商品编号  '+ @sql + ' from table  group by 商品编号')
      

  5.   


    declare @sql varchar(8000),@i int
    set @sql='select 商品编号'
    set @i=0
    select @i=@i+1,@sql = @sql + ',sum(case when convert(varchar,商品类型)='''+ convert(varchar,商品类)型 +''' then 商品数量 else 0 end ) [商品数量'+convert(varchar,@i)+']' from tableName
    select @sql = @sql+' into #a from tableName group by 商品编号'
    exec (@sql+' select * from #a')
      

  6.   

    select 商品编号,sum(case when 商品类型='1' then 商品数量 else 0 end ) 商品数量1 ,
    sum(case when 商品类型='2' then 商品数量 else 0 end ) 商品数量2,
    sum(case when 商品类型='3' then 商品数量 else 0 end ) 商品数量3
    from table 
    group by 商品编号
      

  7.   

    select 商品编号,sum(case when 商品类型='1' then 商品数量 else 0 end ) 商品数量1 ,
    sum(case when 商品类型='2' then 商品数量 else 0 end ) 商品数量2
    from table 
    group by 商品编号
      

  8.   

    create table #a(商品编号 varchar(20),商品类型 int,商品数量 int)insert into #a values ('00001',1,10)
    insert into #a values ('00001',2,20)
    insert into #a values ('00002',1,10)
    insert into #a values ('00003',1,10)
    insert into #a values ('00003',2,20)
    insert into #a values ('00004',1,10)
    insert into #a values ('00004',3,30)declare @sql varchar(8000),@i int
    set @sql='select 商品编号'
    set @i=0
    select @i=@i+1,@sql = @sql + ',sum(case when convert(varchar(20),商品类型)='''+convert(varchar(20),商品类型)+''' then 商品数量 else 0 end) [商品数量'+convert(varchar,@i)+']' from #a
    select @sql = @sql+' into #b from #a group by 商品编号'
    exec (@sql+' select * from #b')
    drop table #a