sql - SQL:如何动态循环并将N个具有NULL值的列添加到临时表中

标签 sql sql-server-2008 stored-procedures

由于一定的要求,我需要在存储过程中创建两个临时表,在将一些数据处理完之后,我需要将两个临时表合并以显示为一个结果集并生成为excel。所以我想在要显示最终结果集时使用UNION

问题是,第一个临时表(表A)固定为20列,第二个临时表有50列(表B)。我的计划是,在处理表A的数据之前,我想添加30个可为空的列并为前20列插入数据,其余的全部为NULL

处理表B的数据后,我使用UNION组合表A和B,以便它们将显示为一个结果集。

我现在可以想到的是,在声明临时表时,对一些注定具有空值的列进行硬编码:

Declare @tmpTableA table (
  ....
  ProcessDate datetime,
  Mode int,
  Col21 varchar(10)
  Col22 varchar(10)
  ....
  Col50 varchar(50)
)


当我将数据插入表A时,必须从Col21开始手动添加null

Insert into(.... Col21, Col22, Col23....)
Values (.... NULL, NULL, NULL....)


完成表A和B的数据处理后,我使用UNION合并表A和B

Select *....Col49,Col50 From Table A
Union
Select *....CompleteDate,ContactPerson From Table B


除了将Col21到Col50硬编码到表A中之外,还有什么好方法可以实现,例如使用while循环向表A中动态添加N个列?

编辑:
根据最新要求,表B不仅有50列,而且还有100列!我真的需要一种动态循环这些列的方法,而不是对80多个列进行硬编码

最佳答案

我想你可以做

select * into #tableA from #tableB where 1=2


这两个表将具有相同的列

关于sql - SQL:如何动态循环并将N个具有NULL值的列添加到临时表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43135506/

相关文章:

MYSQL - 创建过程的语法?

stored-procedures - 支持/反对存储过程中业务逻辑的论点

sql - 多个左连接从每个返回单行,未完成

mysql - 从单个查询更新大表时,SQL NOW() 函数是动态的还是静态的?

sql-server - 无需单击任何按钮即可直接下载 Microsoft SQL Server 2008 R2 Express SP2 的链接?

sql - 为什么 SQL 大小写不起作用

c# - 在 ASP.NET 中从数据库动态创建 DIV

mysql - WITH ROLLUP 结合多个 GROUP BY 条件

sql-server-2008 - 获取 SQL Server 2008 Management Studio 图标

.net - C# .net 和 CLR 存储过程问题