#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. спасибо за ответ, но столбец для оригинала будет динамическим. это статично.