您的脚本有几个错误。
- 之后你的子查询中有一个额外的逗号
MEMPER_Instance,
- 您在转化中
as
多次重复float
脚本应该是:
select * from MEM_TEMP;
DECLARE @query AS NVARCHAR(MAX),
@colsPivot as NVARCHAR(MAX)
select @colsPivot = STUFF((SELECT ','
+ quotename('MEM'+ cast(MEMPER_Instance as varchar(10))+'_'+REPLACE(c.name, 'MEMPER_', ''))
from MEM_TEMP t cross apply sys.columns as C
where C.object_id = object_id('MEM_TEMP')
and C.name not in ('MEMPER_Instance','AHS_ID')
group by t.MEMPER_Instance, c.name
order by t.MEMPER_Instance
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query
= ' SELECT * into ##temp
from
(
select ahs_id,
''MEM''+cast(MEMPER_instance as varchar(10))+''_''+col col,
value
from
(
select ahs_id,
MEMPER_Instance
,cast (MEMPER_MinValue as float) MinValue
,cast (MEMPER_MaxValue as float) MaxValue
,cast (MEMPER_AvgValue as float) AvgValue
,cast (MEMPER_MedianValue as float) MedianValue
,cast (MEMPER_Count as float) Count
from MEM_TEMP
) x
unpivot
(
value
for col in (
MinValue,
MaxValue,
AvgValue,
MedianValue,
Count
)
) u
) x1
pivot
(
max(value)
for col in ('+ @colspivot +')
) p ; '
exec(@query)
select *
from ##temp
请参阅带有演示的 SQL Fiddle