如果在UNION SQL Server

时间:2018-06-22 11:55:47

标签: sql sql-server null union sql-server-2014-express

我目前正在构建动态SQL查询。表和列作为参数发送。因此,表中可能没有这些列。当表中不存在该列时,是否可以提取结果集中的NULL数据?

例如:

SELECT * FROM Table1

输出:

created date | Name  | Salary | Married
-------------+-------+--------+----------
25-Jan-2016  | Chris |  2500  | Y
27-Jan-2016  | John  |  4576  | N
30-Jan-2016  | June  |  3401  | N

所以当我在下面运行查询

SELECT Created_date, Name, Age, Married 
FROM Table1

我需要得到

created date | Name  |  AGE   | Married
-------------+-------+--------+----------
25-Jan-2016  | Chris |  NULL  | Y
27-Jan-2016  | John  |  NULL  | N
30-Jan-2016  | June  |  NULL  | N

IF NOT EXISTSISNULL这样的东西可以工作吗?

在此部分中,我无法使用大量的T-SQL,并且需要简单,因为我正在创建一个对50多个表的UNION查询(要求:|)。任何建议对我都会有很大帮助。

1 个答案:

答案 0 :(得分:1)

我想不出一个简单的解决方案。由于您使用的是动态sql,而不是

(previous dynamic string part)+' fieldname '+(next dynamic string part)

您可以使用

(previous dynamic string part)
+ case when exists (
select 1 
from sys.tables t 
inner join sys.columns c on t.object_id=c.object_id
where c.name=your_field_name and t.name=your_table_name)
) then ' fieldname ' else ' NULL ' end
+(next dynamic string part)