先生成一个日期临时表然后
select a.日期,b.产品名称,
序10=max(case 工序号 when 10 then 完工数 else 0 end),
序20=max(case 工序号 when 20 then 完工数 else 0 end),
...
from 日期临时表 a left join aa b on a.日期=b.日期
group by a.日期,b.产品名称
select a.日期,b.产品名称,
序10=max(case 工序号 when 10 then 完工数 else 0 end),
序20=max(case 工序号 when 20 then 完工数 else 0 end),
...
from 日期临时表 a left join aa b on a.日期=b.日期
group by a.日期,b.产品名称
set @sql = 'select 产品名称, 日期'
select @sql = @sql + ',sum(case 工序号 when '''+工序号+''' then 完工数 end) [序'+工序号+']'
from (select distinct 工序号 from aa) as a
select @sql = @sql+' from aa group by 产品名称, 日期'
exec(@sql)