Создать таблицу из строк результатов запроса - PullRequest
0 голосов
/ 15 августа 2011

В SQL Server 2005 мне нужно создать таблицу динамически на основе строк , возвращаемых из запроса.

Например:

SELECT * FROM TableA 

возвращает следующие строки

  1. 1011 * Имя, отчество *
  2. Фамилия
  3. DOB

И я хотел бы, чтобы таблица создавалась так:

Forename, Surname, DOB.

Я планирую использовать эту процедуру на нескольких разных источниках, поэтому возвращаемые строки будут отличаться каждый раз.

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 15 августа 2011

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

declare @sql nvarchar(max)
select @sql = coalesce(@sql + ', 
    ' + yourcolumn + ' varchar(255)',
    yourcolumn + ' varchar(255)')
from yourtable

select @sql = 'create table tableA(' + @sql + ')'

--exec sp_executesql @sql
select @sql
0 голосов
/ 15 августа 2011

Я бы использовал SELECT INTO в сочетании с PIVOT:

См:

У меня сейчас нет доступа к SQL Server, но я бы хотел что-то вроде этого (основываясь на ссылках выше):

SELECT [0] 
INTO TableB
FROM
    ( SELECT id, colName FROM TableA ) AS SourceTable
PIVOT
    ( AVG(id) FOR colName IN [0] ) AS PivotTable;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...