Создание таблицы для поворота и объединения столбцов из выходящей таблицы? - PullRequest
0 голосов
/ 05 марта 2020

У меня есть таблица, в которой хранятся пользовательские значения Dynami c из форм, которые они создают.

Таблица называется Dynamic_Fields_T и отформатирована следующим образом:

ID  | FIELD_NAME 
1   |  TANK  
2   | PRODUCT TYPE 
3   | ODOMETER 
4   | RECEIPT # 

Это невозможно присоединить к нашим таблицам заявок.

Мне это нужно выглядеть следующим образом:

ID_1 | ID_2 .......ID_N

TANK | PRODUCT_TYPE  ......N

Любая помощь приветствуется.

1 Ответ

1 голос
/ 06 марта 2020

Предполагая, что ваш столбец [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)

результат:

enter image description here

...