如果颜色是定死的,就几种,不妨这样select 尺码,
sum(case 颜色 when '黑色' then 数量 else 0 end ) 黑, 
sum(case 颜色 when '红色' then 数量 else 0 end ) 红,
sum(case 颜色 when '兰色' then 数量 else 0 end ) 兰, 
sum(case 颜色 when '白色' then 数量 else 0 end ) 白,
sum(case 颜色 when '灰色' then 数量 else 0 end ) 灰
from 总计划表 where 商品='西服' group by 尺码

解决方案 »

  1.   

    如果颜色不定,可用动态的sql declare @str varchar(1000)
    set @str=''
    select @str=@str+',sum(case 颜色 when '''+ 颜色+''' then 数量 else 0 end)'+ 颜色 from  总计划表 group by 颜色
    exec('select 尺码' +@str+ ' from 总计划表 where 商品=''西服'' group by 尺码')
      

  2.   

    有一点复杂:
    declare @sql varchar(5000)
    set @sql='select 尺码,'
    select @sql=@sql+'sum (case when 颜色='''+颜色+''' then 数量 else 0 end) as ' +  颜色+','
    from 总计划表 group by 尺码
    set @sql=left(@sql,len(@sql)-1)
    set @sql=@sql+' from 总计划表 where 商品=''西装'''
    exec (@sql)
      

  3.   

    对不起,应该是:
    declare @sql varchar(5000)
    set @sql='select 尺码,'
    select @sql=@sql+'sum (case when 颜色='''+颜色+''' then 数量 else 0 end) as ' +  颜色+','
    from 总计划表 group by 颜色 <--刚刚这里错了
    set @sql=left(@sql,len(@sql)-1)
    set @sql=@sql+' from 总计划表 where 商品=''西装'''
    exec (@sql)
      

  4.   

    放结果表dbgrid中好做,修改的结果要保存的话,你得写程序实现.
      

  5.   

    有一点复杂:
    declare @sql varchar(5000)
    set @sql='select 尺码'
    select @sql=@sql+',sum (case when 颜色='''+颜色+''' then 数量 else 0 end)['+颜色+'] from (select distinct 颜色 from 总计划表) bset @sql=@sql+' from 总计划表 where 商品=''西装'' group by 尺码'
    exec (@sql)
      

  6.   

    動態sql看不懂.那位仁兄能否解釋一下.不甚感謝
      

  7.   

    昨天我问了 netcoder(朱二) 在sql查询分析器中print @str就可以看到了