Usa Cross Apply
per sbloccare il risultato. La query di query dinamica deve essere costruita in questo 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
dovrebbe essere qualcosa come
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
Nota : Poiché stai generando un elenco di valori da #labelTempTab
tabella assicurati di avere tutte le etichette presenti in #SetValuesTable
tabella