[英]JOIn by case Expression
我想執行此代碼
select * from a
right join s
on case when s.[Diff ] = 0 and a.ActivityDate < s.[ExecDate]
then a.ID1 =s.ID2
when
( a.ActivityDate <s.[ExecDate] and a.ActivityDate >= s.[Date3] )
then a.ID1 =s.ID2
END
這種情況是沒有意義的。 無論如何,您都可以連接相同的兩個字段,因此只需將案例條件添加到連接條件中:
SELECT ...
JOIN ... ON ((a.ID1 = s.ID2) AND ((case #1) OR (case #2)))
為了詳細說明Marc的答案,我認為最簡單的形式是:
select *
from a right join
s
on a.ID1 = s.ID2 and a.ActivityDate < s.[ExecDate] and
(s.[Diff ] = 0 or a.ActivityDate >= s.[Date3])
請注意,我建議使用left join
而不是right join
。 通常,閱讀一個查詢時會想到“第一個表中的所有行以及其他表中的匹配行都被保留”,這會更直觀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.