0

我不擅长提问,所以我举一个我想要的例子。

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 语句?

4

2 回答 2

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

希望这可以帮助!!!

于 2013-10-04T09:35:50.947 回答
0

如果不需要不使用动态 sql,我会选择那个。

另一个想法是在表中使用用户定义的函数返回。

所以你把逻辑封装在那里......

于 2013-10-04T09:44:34.203 回答