gpt4 book ai didi

sql - 使用动态列创建表

转载 作者:行者123 更新时间:2023-12-02 16:53:35 26 4
gpt4 key购买 nike

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

我有一些基于条件的列,例如SalaryCode

如何为基于条件的列创建表? 我不想使用选择#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

关于如何做得更好有什么帮助/建议吗?

<小时/>

更新:

最初,我使用SELECT INTO #TempTable,但没有指定列数,由于 SQL Azure 不支持这一点,我决定使用INSERT INTO。但不确定如何在已定义的结构中添加动态列。它是完全动态的 SQL :(

最佳答案

您需要多少个动态列?

拥有一个名为 Dynamic 类型为 nvarchar(MAX) 或类似内容的列怎么样,然后您可以将数据放入其中并根据需要设置格式.

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

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

CREATE TABLE tblPerson
(
PersonId INT,
FirstName NVARCHAR(256),
LastName NVARCHAR(256) NULL,
PRIMARY KEY (PersonId)
)

还请注意上面的 NULL 列。

有关在 SQL 中创建具有主键NULL 列的表的更多说明,请参阅此处:

Create tables in SQL

关于sql - 使用动态列创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15401268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com