Ваш опорный запрос dyanmic должен быть похож на этот демо
declare @cols nvarchar(max);
declare @query nvarchar(max);
select
sourceId,
patientId,
data,
cols= concat(col,sortOrder)
into #t
from
Contacts
UNPIVOT
(
data for col in
(
personalContactType_MisContactTypeId,
personalContactNameLast,
personalContactNameFirst
)
)up
select @cols= stuff((
select distinct ','+ quotename(cols)
from #t
for xml path('')),1,1,'')
select @cols
select @query= 'select * from #t
pivot
( max(data) for cols in ('+@cols+
'))p'
exec (@query)