2013-12-11 117 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變量。

相關問題