SQL Server:使用动态列创建临时表

Wor*_*gon 5 t-sql sql-server dynamic temp-tables

我对目前的情况有疑问,我搜索了网上的任何解决方案,但我仍然无法得到它.

这里的问题是:

我有一堆SQL语句需要在存储过程中使用游标内部执行,每个语句通过从不同的数据库和表中选择来执行插入.

例如:

INSERT INTO Database1.Table1(column1, column2, column3)
   SELECT column1,column2, column3
   FROM Database2.Table2
   WHERE --Some Condition
Run Code Online (Sandbox Code Playgroud)

也许另一个执行的SQL语句是这样的

INSERT INTO Database1.Table3(column1, column2, column3, column4)
   SELECT column1, column2, column3, column4
   FROM Database3.Table3
   WHERE --Some Condition
Run Code Online (Sandbox Code Playgroud)

好的,基本上我的过程是这样的

Execute Sql to insert into temp Tables --> Insert into a permanent Table from Temp Tables
Run Code Online (Sandbox Code Playgroud)

从上面的两个SQL语句,我执行的结果来自database2或3或者可能是4,5等等.我将转到我的database1进行永久存储.告诉我们的更多摘要方式,我只想制作另一个从不同数据源获取的数据副本并存储到我的本地数据库中以进行进一步处理.

我的主要问题是我的负责人(或经理)告诉我将所有执行结果扔到TEMP表中或#Table在执行永久物之前.

像这样的东西:

INSERT INTO #Table3(column1, column2, column3, column4)
   SELECT column1, column2, column3, column4
   FROM Database3.Table3
   WHERE --Some Condition
Run Code Online (Sandbox Code Playgroud)

我对#Temp桌子进行了一些研究,我发现它们中的大多数是使用'FIX'栏创建的

CREATE TABLE #Table
(
    column1 VARCHAR(10),
    column2 VARCHAR(10),
    column3 VARCHAR(10)
)
Run Code Online (Sandbox Code Playgroud)

问题:无论如何用动态列创建它?更详细的询问方式,无论如何都要将select插入到#Temp没有前缀列的表中?因为我不可能为每个执行的SQL创建一堆临时表.

谢谢

PS 1:我是SQL Server的新手,请不要犹豫,说出我的错误或错误.我们都从错误中吸取教训.

PS 2:对不起我的英语水平很差,我尽力更清楚地阐述它.

问候:

LiangCk

Jer*_*ins 5

你说你想要的东西



INSERT INTO #Table3(coloum1,coloum2,coloum3,coloum4)
Select coloum1,coloum2,coloum3,coloum4
FROM Database3.Table3
WHERE --Some Condition


无需先创建具有固定列的临时表.

这可行:



Select coloum1,coloum2,coloum3,coloum4
INTO #Table3
FROM Database3.Table3
WHERE --Some Condition


您不必先创建临时表或指定列,只需选择临时表,它就会动态创建.

听起来你想要做更多的事情......我无法弄清楚那是什么,但听起来好像可能从各种表中选择所有数据到一个临时表中(我不知道为什么你想要做到这一点)...如果是这样的话那么UNION或者UNION ALL应该工作.您仍然可以将这些与动态创建的临时表一起使用.



Select coloum1,coloum2,coloum3,coloum4
INTO #Table3
FROM Database3.Table3
WHERE --Some Condition

UNION

Select column1, column2, column3, null
FROM Database1.Table1
WHERE --Some condition


null上面只是给第二选择相同的列数作为第一个(我用从您的帖子都选择); 这是一个要求UNION.