27,581
社区成员




if object_id('tempdb..#list') is not null drop table #list;
select 产品编码='A',工序名称='检管',工时=10 into #list union all
select 产品编码='A',工序名称='去外毛',工时=9 union all
select 产品编码='A',工序名称='撕开',工时=10 union all
select 产品编码='A1',工序名称='撕开',工时=8 union all
select 产品编码='A1',工序名称='组装',工时=8 union all
select 产品编码='A2',工序名称='A1',工时=8 union all
select 产品编码='A3',工序名称='A2',工时=8
declare @colname nvarchar(max)='',@sql nvarchar(max)
;
with list as(
select distinct 工序名称
from #list
)
select @colname=@colname+',['+工序名称+']'
from list
print @colname
set @sql='
select *
from #list pivot(max(工时) for 工序名称 in('+right(@colname,len(@colname)-1)+')) pt
'
exec(@sql)
/*
产品编码 A1 A2 检管 去外毛 撕开 组装
---- ----------- ----------- ----------- ----------- ----------- -----------
A NULL NULL 10 9 10 NULL
A1 NULL NULL NULL NULL 8 8
A2 8 NULL NULL NULL NULL NULL
A3 NULL 8 NULL NULL NULL NULL
*/