如果颜色是定死的,就几种,不妨这样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 尺码
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 尺码
set @str=''
select @str=@str+',sum(case 颜色 when '''+ 颜色+''' then 数量 else 0 end)'+ 颜色 from 总计划表 group by 颜色
exec('select 尺码' +@str+ ' from 总计划表 where 商品=''西服'' group by 尺码')
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)
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)
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)