Use
Cross Apply
para destravar o resultado. A consulta de consulta dinâmica deve ser construída neste formato. SELECT mnum,
label,
label_value,
[Property Type]
FROM #SetValuesTable
CROSS apply(VALUES ('la1',la1),('la2',la2),('la3',la3),
('sa1',sa1),('sa2',sa2),('sa3',sa3),
('ha1',ha1),('ha2',ha2),('ha3',ha3),
('ka1',ka1),('ka2',ka2)) cs (label, label_value)
Dynamic query
deve ser algo como DECLARE @label VARCHAR(max)='',
@sql NVARCHAR(max)
SELECT @label += '(' + '''' + label + ''',' + label + '),'
FROM (SELECT DISTINCT Isnull(label, '') label
FROM #labelTempTab)a
SELECT @label = LEFT(@label, Len(@label) - 1)
SET @sql= 'SELECT mnum,
label,
label_value,
[Property Type]
FROM #SetValuesTable
CROSS apply(VALUES ' + @label
+ ') cs (label, label_value) '
EXEC Sp_executesql @sql
Observação: Como você está gerando uma lista de valores de
#labelTempTab
table certifique-se de ter todos os rótulos presentes em #SetValuesTable
tabela