使用动态列创建表

Bil*_*lla 7 sql sql-server sql-server-2008 azure-storage azure-sql-database

我需要将一些数据插入临时表.

我有一些像有条件基于列Salary,Code.

如何为基于条件的列创建表?我不想用 SELECT INTO #tempTable

这是代码:

DECLARE @sql NVARCHAR(MAX)
,@sqlSelect NVARCHAR(MAX) = ''
,@sqlFrom NVARCHAR(MAX) =''

CREATE TABLE #myTempTable (Id INT, DeptId INT, DeptName VARCHAR(100))


SET @sqlSelect ='INSERT INTO #myTempTable
SELECT EMP.Id, EMP.DeptId, EMP.DeptName'

SET @sqlFrom =' FROM dbo.EMPLOYEE AS EMP'

IF (someCondition)
BEGIN
    SET @sqlSelect = @sqlSelect +', EMP.Salary, EMP.Code'            
END

SET @sql =  @sqlSelect +@sqlFrom 

EXEC sp_executesql @sql
Run Code Online (Sandbox Code Playgroud)

关于我能做得更好的任何帮助/建议?


更新:

最初我使用时SELECT INTO #TempTable没有指定任何列,因为SQL Azure不支持,我决定使用INSERT INTO.但不确定如何在已定义的结构中添加动态列.它完全动态的SQL :(

rhu*_*hes 1

您需要多少个动态列?

Dynamic拥有一个名为of typenvarchar(MAX)或类似内容的列怎么样,然后您可以将数据放在那里并根据需要设置格式。

另一种选择是创建一个包含NULL列的表。

要在 SQL 中执行此操作,您可以执行以下操作:

CREATE TABLE tblPerson
(
    PersonId INT,
    FirstName NVARCHAR(256),
    LastName NVARCHAR(256) NULL,
    PRIMARY KEY (PersonId)
)
Run Code Online (Sandbox Code Playgroud)

另请注意NULL上面的列。

有关在 SQL 中使用Primary Keys和列创建表的进一步说明,请参阅此处:NULL

在 SQL 中创建表