如果 UNION SQL 服务器中的列不存在于 table 中,则拉 NULL
Pull NULL if column not present in table while UNION SQL Server
我目前正在构建动态 SQL 查询。 table 和列作为参数发送。因此这些列可能不存在于 table 中。当 table 中不存在该列时,是否可以在结果集中提取 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 EXISTS
或 ISNULL
之类的东西在这行得通吗?
我不能在此段中使用广泛的 T-SQL 并且需要简单,因为我正在创建超过 50 tables 的 UNION 查询(要求 :| )。任何建议都会对我有很大帮助。
我想不出一个简单的解决方案。由于您使用的是动态 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)
我目前正在构建动态 SQL 查询。 table 和列作为参数发送。因此这些列可能不存在于 table 中。当 table 中不存在该列时,是否可以在结果集中提取 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 EXISTS
或 ISNULL
之类的东西在这行得通吗?
我不能在此段中使用广泛的 T-SQL 并且需要简单,因为我正在创建超过 50 tables 的 UNION 查询(要求 :| )。任何建议都会对我有很大帮助。
我想不出一个简单的解决方案。由于您使用的是动态 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)