Как мне создать новую таблицу в SQL, используя значения строк другой таблицы в качестве имен столбцов (динамические)?

#sql #sql-server #database #sql-server-2008

#sql #sql-server #База данных #sql-server-2008

Вопрос:

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

Например, если моя старая таблица выглядит как:

 players
-----------
Lebron James
Kobe Bryant
Dwayne Wade
Chris Bosh
James Harden
 

Я хочу, чтобы новая таблица выглядела так:

 Lebron James | Kobe Bryant | Dwayne Wade | Chris Bosh | James Harden
 

Комментарии:

1. Будут ли поля в таблицах одинаковыми? Если да, то зачем вы создаете новые таблицы?

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

3. В этом случае вам лучше использовать одну таблицу и поле, которое отличает проигрыватель, на который ссылается запись.

Ответ №1:

Попробуйте этот пример:

 DROP TABLE #players 
CREATE TABLE #players (name VARCHAR(200))
INSERT INTO #players 
SELECT 'Lebron James'
UNION SELECT 'Kobe Bryant'
UNION SELECT 'Dwayne Wade'
UNION SELECT 'Chris Bosh'
UNION SELECT 'James Harden'


DECLARE @cmd VARCHAR(8000)
SET @cmd ='CREATE TABLE MyNewTable (id INT'
SELECT @cmd = @cmd   '
, [' name '] VARCHAR(255)'
FROM #players

SELECT @cmd = @cmd   ')'

PRINT @cmd
EXEC(@cmd)

EXEC('SELECT * FROM MyNewTable')
 

Комментарии:

1. спасибо за ответ, но столбец для оригинала будет динамическим. это статично.