我不善于提问,所以我会给出一个我想要的例子。
if i = 1 and xi = 0 then
select a,b,c,d,e,f,g where z = 1
elseif i=0 and xi = 1 then
select a,c,f,h,l,n where w = var
elseif i=1 and xi=1 then
select a,b,c,d,e,f,g, where z = 1
union all
select a,c,f,h,l,n where w = var
end if
如果他们的列不相等并且它们都具有唯一条件,我如何加入2 select语句?
答案 0 :(得分:0)
根据条件,您可以创建派生表以获取所需的列,然后获取两个表的并集,在列数较少的派生表的列列表中添加空值:
伪代码:
select * from
(select a,b,c,d,e,f,g
where z = 1
and 1 = case when i = 1 and xi = 0 then 1
when i = 1 and xi = 1 then 1
else 0
end) as T1
union all
(select a,c,f,h,l,n ,null -- add null value to equate number of columns
where w = var
and 1 = case when i=0 and xi = 1 then 1
when i=1 and xi = 1 then 1
else 0
end) as T2
希望这有帮助!!!
答案 1 :(得分:0)
如果不要求不使用动态sql,我会选择那个。
另一个想法是使用用户定义的函数returnin表。
所以你在那里封装逻辑......