Dynamic Pivot
Dynamic Pivot.
Last updated:
Warning: Review and test in a non-production environment before running.
select *
into #t
from openquery([LinkedServer],'select memberid,calcdate,redemptionsum
from SourceDb.dbo.ResultTable r
inner join MemberDb.dbo.member m on m.recordkey = r.memberkey
order by memberid,calcdate')
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(t.calcdate)
FROM #t t
order by ','+ QUOTENAME(t.calcdate)
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'')
set @query = 'SELECT memberid, ' + @cols + ' from
(
select * from #t
) x
pivot
(
max(redemptionsum)
for calcdate in (' + @cols + ')
) p '
execute(@query)
drop table #t;