我想根据值决定内部或外部联接(到同一个表)。 我该怎么做呢? 感谢
我在这里有我所有的选择值 然后一堆连接 在最后一次加入我想做
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
答案 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时,它将有效地使用内连接。