Получить набор данных в качестве заголовка для другой таблицы - PullRequest
0 голосов
/ 11 октября 2018

Я получаю столбцы и данные всех моих опросов в онлайн-базе данных через мой API отдельно.

Первый пример - заголовки столбцов первых двух опросов

Таблица столбцов

ID  Col1    Col2         Col3
------------------------------------    
0   Name    Birhtdate    Country
1   Time    Name         Address

Данные, которые я получаю для первого опроса:как

Таблица данных

ID  Col1    Col2        Col3
------------------------------------    
0   James   11-11-2011  Japan
1   Tobi    26-02-2014  India

Теперь я хочу объединить данные и столбцы, чтобы имена столбцов были заголовком окончательной таблицы, например

Финальный стол

ID  Name    Birthday     Country
------------------------------------    
0   James   11-11-20111  Japan
1   Tobi    26-02-2014   India

Все попытки, которые я предпринял с помощью операторов Select, дали мне

Неверная таблица результатов

ID  Col1    Col2         Col3
------------------------------------    
0   Name    Birthdate    Country
1   James   11-11-20111  Japan
2   Tobi    26-02-2014   India

Может ли кто-нибудь помочь мне получить итоговую таблицу (вид, временная таблица ... как угодно) из моих данных?Я работаю с SQL-Server 2016

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Единственный способ достичь такого результата с использованием чистого T-SQL - это использовать динамический SQL.

Вы можете сделать что-то вроде этого:

DECLARE @SQL nvarchar(max)

SELECT @SQL = ' SELECT Col1 AS '+ Col1 +', Col2 AS '+ Col2 +', Col3 AS '+ Col3 +
              ' FROM DataTable' 
FROM ColumnsTable
WHERE Id = 0

EXEC (@SQL)
0 голосов
/ 11 октября 2018

Вы можете использовать динамический SQL для определения псевдонимов столбцов, приходящих из другой таблицы:

declare @col1 varchar(50), @col2 varchar(50), @col3 varchar(50)
declare @sql nvarchar(max)

create table #t1  (ID int, Col1 varchar(50), Col2 varchar(50), Col3 varchar(50))
insert into #t1 values   
 (0, 'Name', 'Birhtdate', 'Country')
,(1, 'Time', 'Name'     , 'Address')

create table #t2 (ID int, Col1 varchar(50), Col2 varchar(50), Col3 varchar(50))
insert into #t2 values 
  (0, 'James','2011-11-11', 'Japan')
, (1, 'Tobi' ,'2014-02-26', 'India')

select @col1=col1, @col2=col2, @col3=col3 from #t1 where id = 0

set @sql=concat('select id, col1 as ', @col1, ', col2 as ', 
                @col2, ', col3 as ', @col3, ' from #t2')

exec (@sql)

Результат:

enter image description here

...