declare @s varchar(8000)
set @s=''
select @s=@s+',数量'+标示+'=sum(case 标示 when '''+标示+''' then 数量 else 0 end)'
from 表 group by 标示exec('select 商品'+@s+' from 表 group by 商品')

解决方案 »

  1.   

    如果只要
    表内容:
    标示   数量   商品
    A       -1    测试
    B        1    测试
    SQL查询为:
    商品     数量1     数量2
    测试      -1           1
    效果
    有无更简洁的方法?
      

  2.   

    declare @a varchar(8000)
    declare @b varchar(8000)
    select @a = ' sum(case  标示 when '''+标示+'''  then 数量 else 0 end) as 数量'
        + 标示+','  from t_1 group by 标示
    select @a =left(@a,len(@a)-1)
    select @b ='select 商品,'+@a+' group by 商品'
    exec(@b)
      

  3.   

    /*-如果只要
    表内容:
    标示   数量   商品
    A       -1    测试
    B        1    测试
    SQL查询为:
    商品     数量1     数量2
    测试      -1           1
    --*/--则查询语句
    select 商品
      ,数量1=sum(case 标示 when 'A' then 数量 else 0 end)
      ,数量2=sum(case 标示 when 'B' then 数量 else 0 end)
    from 表
    group by 商品