JOIn by case Expression

时间:2016-09-01 14:56:28

标签: sql sql-server sql-server-2012

我想执行此代码

displayLength

2 个答案:

答案 0 :(得分:2)

案件毫无意义。您无论如何都要加入相同的两个字段,因此只需将您的案例条件添加到连接条件:

SELECT ...
JOIN ... ON ((a.ID1 = s.ID2) AND ((case #1) OR (case #2)))

答案 1 :(得分:1)

只是详细说明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。通常更直观地阅读查询思维&#34;第一个表中的所有行都保留在其他表中的匹配行中。&#34;