首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL:如何在临时表中动态循环添加N个空值的列

问SQL:如何在临时表中动态循环添加N个空值的列
EN

Stack Overflow用户
提问于 2017-03-31 15:58:37
回答 2查看 785关注 0票数 2

由于某种需求,我需要在存储过程中创建两个临时表,将一些数据处理到其中后,我需要将这两个临时表合并为一个结果集并生成到excel中。因此,当我想要显示最终结果集时,我正在考虑使用UNION。

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

我现在能想到的就是在声明临时表时硬编码一些注定要有空值的列:

代码语言:javascript
复制
Declare @tmpTableA table (
  ....
  ProcessDate datetime,
  Mode int,
  Col21 varchar(10)
  Col22 varchar(10)
  ....
  Col50 varchar(50)
)

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

代码语言:javascript
复制
Insert into(.... Col21, Col22, Col23....)
Values (.... NULL, NULL, NULL....)

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

代码语言:javascript
复制
Select *....Col49,Col50 From Table A
Union
Select *....CompleteDate,ContactPerson From Table B

除了将Col21到Col50硬编码到表A之外,有没有什么很好的方法可以实现这一点,比如使用while循环将N列动态添加到表A中?

编辑:根据最新要求,B表不是只有50列,而是100列!我真的需要一种动态循环这些列的方法,而不是硬编码超过80列

EN

回答 2

Stack Overflow用户

发布于 2017-03-31 16:52:18

我想你可以这样做

代码语言:javascript
复制
select * into #tableA from #tableB where 1=2

这样,两个表将具有相同的列

票数 1
EN

Stack Overflow用户

发布于 2017-03-31 16:15:53

您不需要向表A中添加列,只需添加30个NULL即可从表A中进行选择。

代码语言:javascript
复制
Select *,NULL,...,NULL,NULL From Table A 
Union
Select * From Table B

您可以添加别名以使结果更清晰一些

代码语言:javascript
复制
Select *,...,NULL CompleteDate, NULL ContactPerson From Table A
Union
Select * From Table B
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43135506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档