Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Динамично създаване на таблица в tsql

Бихте ли могли да използвате нещо подобно?

DECLARE @Tab VARCHAR(MAX)
SET @Tab = 'CREATE TABLE #Whatever ('

SELECT @Tab = @Tab + QUOTENAME(ColumnName) + ' INT NULL
,'
FROM @This
SELECT @Tab = SUBSTRING(@Tab,1,LEN(@Tab)-1) + ')'
PRINT @Tab
-- EXEC (@Tab)

Две точки:Може да откриете, че ще трябва да създадете временната таблица без да използвате динамичен sql, след което да коригирате командата select, за да промените таблицата; това е така, че таблицата да съществува в текущия контекст - ако операторът за създаване е в динамичния, може да получите грешка.

Не ми харесва да използвам динамичен sql като този - ако можете да използвате пивот по-късно, за да върнете колоните, това може да е по-добър вариант (не съм сигурен дали е възможно в този случай).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте задание за агент на SQL Server с помощта на T-SQL

  2. SQL Server Query - групово умножение

  3. добавете +- 1 година в SQL Server

  4. Не може да се компилира SSIS компонент; Липсващо сглобяване във Visual Studio 2008

  5. Доставчикът на OLE DB Microsoft.ACE.OLEDB.12.0 за свързан сървър (null) върна съобщение Отметката е невалидна.