2017-06-06 89 views
0

我試圖編寫一個查詢來檢查TblFamily中的值是否爲null,如果是,則執行一組不同的連接。我收到關鍵字'OUTER'附近的語法錯誤'錯誤。SQL中的條件連接

我看過其他條件連接帖子,其中大部分似乎與要加入的字段有關,而不是是否要替換另一個連接,所以我沒有找到任何正確的示例句法。

任何線索?

SELECT 
    TblServiceUser.ServiceUserId 

FROM 
TblServiceUser 

(CASE WHEN TblFamily.FamilyServiceUserId IS NULL THEN 
(LEFT OUTER JOIN TblActivity ON TblActivity.ActivityServiceUserId = TblServiceUser.ServiceUserId) 
ELSE 
(LEFT OUTER JOIN TblFamily ON TblFamily.FamilyServiceUserId = TblServiceUser.ServiceUserId 
LEFT OUTER JOIN TblActivity ON TblServiceUser.ServiceUserId = TblActivity.ActivityServiceUserId) 
END) 
+2

如果你只想顯示'TblServiceUser.ServiceUserId',爲什麼加入所有這些表?或者你也想顯示這些表格中的數據嗎?然後請告訴我們結果應該如何。你會顯示從一個表還是另一個填充的列?或者你會顯示單獨的列,其中一個或另一個都是空的? –

回答

0

這裏什麼ü需要

declare @SQL varchar(max) 
select @SQL = 'SELECT 
    TblServiceUser.ServiceUserId 
FROM 
TblServiceUser'+ 
CASE WHEN TblFamily.FamilyServiceUserId IS NULL THEN 
+'LEFT OUTER JOIN TblActivity ON TblActivity.ActivityServiceUserId = TblServiceUser.ServiceUserId+' ELSE 
+'LEFT OUTER JOIN TblFamily ON TblFamily.FamilyServiceUserId = TblServiceUser.ServiceUserId 
LEFT OUTER JOIN TblActivity ON TblServiceUser.ServiceUserId = TblActivity.ActivityServiceUserId'+ END 

exec @SQL