2013-12-11 68 views
1

有没有办法加入案件?有没有办法加入案件

喜欢的东西

select * from abba 
    case when a=b then 
     join acdc on abba.id=acdc.id 
    when b=c then 
     join bebop on abba.id=bebop.id 
    end 

有没有办法做到这一点?

问候 乔

+0

这不就是'on'部分的作用吗?你可以合并另外两张桌子并加入你的状态。 –

回答

6

通常的方式做,这是LEFT JOIN表和选择根据案件条件

​​
+0

感谢这有助于! – Joe

0

如果查询非动态那么没有,因为case语句只返回文字值,如string,int或其他数据类型。

但有一个解决方法 - 动态sql。您将整个语句视为一个字符串。然后,您可以在字符串中处理您的案例。

例如:

declare @query varchar(1000) 
set @query = 'select * from abba '+ 
       case when @[email protected] then 'join acdc on abba.id=acdc.id' 
        when @[email protected] then 'join bebop on abba.id=bebop.id' 
       end 
exec(@query) 

但ofcourse,你的A = B & B = C必须有一些SQL变量。