Предполагая, что ваш столбец [ID] является уникальным, вы можете использовать динамический оператор c select
с функцией агрегирования (min
или max
), чтобы вернуть все строки в одна строка:
--create test table
create table #Dynamic_Fields_T (
[ID] INT
,[FIELD_NAME] varchar(max)
)
--populate test table
insert into #Dynamic_Fields_T
values
(1 ,'TANK')
,(2 ,'PRODUCT TYPE')
,(3 ,'ODOMETER')
,(4 ,'RECEIPT #')
declare @sql nvarchar(max) =''
--build dynamic columns
select
@sql = @sql + ',max(case when [ID] = ''' + cast([ID] as varchar) + ''' then [FIELD_NAME] end) as [ID_' + cast([ID] as varchar) + ' ] '
from
#Dynamic_Fields_T
--build dynamic query, remove unnecessary comma
select @sql = 'select ' + stuff(@sql, 1 , 1, '') + ' from #Dynamic_Fields_T'
--execute dynamic query
execute (@sql)
результат: