DECLARE@colsAS NVARCHAR(MAX),@queryAS NVARCHAR(MAX);if object_id('tempdb..##tmp1')isnotnullbeginDROPTABLE##tmp1 endif object_id('tempdb..##tmp2')isnotnullbeginDROPTABLE##tmp2end;with tmpdata as(select N'车线'as Id
unionselect N'刀模'as Id
unionselect N'电压模'as Id
unionselect N'扣凿模'as Id
)select*into##tmp1 from tmpdataSET@cols= STUFF((SELECTdistinct','+ QUOTENAME(c.id)FROM##tmp1 cFOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'),1,1,'')set@query='SELECT DATAAREAID, PRICECALCID, '+@cols+' into ##tmp2 from
(
select PRICECALCID
, convert(decimal(16, 4),Price) as Price
, DATAAREAID
,MisItemName
from TEC_BOMCostMisCalc
) x
pivot
(
sum(Price)
for MisItemName in ('+@cols+')
) p 'execute(@query)select*from##tmp2
实现动态行转列DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX);if object_id('tempdb..##tmp1') is not nullbegin DROP TABLE ##tmp1 endif object_id('tempdb..##tmp2') is not nullbegin DROP TABLE ##tmp2end;with tmpdata as (