条件内部或外部连接sql server

时间:2010-03-09 16:07:24

标签: sql-server

我想根据值决定内部或外部联接(到同一个表)。 我该怎么做呢? 感谢

我在这里有我所有的选择值 然后一堆连接 在最后一次加入我想做

  CASE 
WHEN RTRIM(LTRIM(@AccountType)) = 'OFX' THEN
INNER JOIN Subscriber.Access.SubscriberOFXAccount  ASOA
                ON SSA.Id = ASOA.SubscriberOFXAccountId AND ASOA.Active = 1
ELSE
LEFT JOIN Subscriber.Access.SubscriberOFXAccount  ASOA2
                ON SSA.Id = ASOA2.SubscriberOFXAccountId 

2 个答案:

答案 0 :(得分:1)

您只需使用if / else条件即可完全构成SQL语句:

IF RTRIM(LTRIM(@AccountType)) = 'OFX' THEN
 BEGIN
   SELECT Blah FROM Table WHERE Blah2=SomeThings INNER JOIN MyOtherFooBar ON ...
 END
ELSE
 BEGIN
   SELECT Blah FROM Table WHERE Blah2=SomeThings LEFT JOIN MyOtherFooBar ON ...
 END

答案 1 :(得分:1)

怎么样:

Select ..
From ...
    Left Join Subscriber.Access.SubscriberOFXAccount ASOA 
        ON SSA.Id = ASOA.SubscriberOFXAccountId 
Where RTRIM(LTRIM(@AccountType)) <> 'OFX' Or ASOA.IsActive = 1

请注意,通过检查左连接上的IsActive = 1,它实际上意味着必须存在一行,因此当@AccountType不是OFX时,它将有效地使用内连接。