Използвайте Cross Apply
за да отмените завъртането на резултата. Заявката за динамична заявка трябва да бъде конструирана в този формат.
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
трябва да бъде нещо като
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
Забележка: Тъй като генерирате списък със стойности от #labelTempTab
уверете се, че имате всички етикети в #SetValuesTable
таблица