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 :(
您需要多少个动态列?
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