由于一定的要求,我需要在存储过程中创建两个临时表,在将一些数据处理完之后,我需要将两个临时表合并以显示为一个结果集并生成为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和BSelect *....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/