Użyj Cross Apply
aby odwrócić wynik. Zapytanie dynamiczne powinno być skonstruowane w tym formacie.
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
powinno być jak
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
Uwaga: Ponieważ generujesz listę wartości z #labelTempTab
upewnij się, że masz wszystkie etykiety obecne w #SetValuesTable
tabela