簡體   English   中英

JOIN按大小寫表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM