我有两个需要与公用记录相交的表。
table1
Name epmno date1 date2
ss1 123 01/10/2017 01/10/2017
ss2 124 02/10/2019 01/10/2019
ss3 125 null 01/09/2017
table1条件:选择date1> 18个月,如果date1为空,则使用date2检查> 18个月
table2
epmno date3
123 01/10/2017
124 02/10/2019
125 null
table2条件:选择date3> 18个月且date3为空。
要加入table1和table2,我有一个公共字段epmno(所以我在table1.epmno = table2.empno中使用)
查询:
select empno, name from (select empno,Name from table1 where (date1 is null use date2) >
current_date - 18 MONTHS) a
(select empno from table2 where date3 > current_date - 18 MONTHS or date3 is null) b where
a.empno=b.empno;
结果:
Name epmno
ss1 123
ss3 125
在这种情况下,我们如何使用db2语法编写最佳查询,请您帮帮我吗?
答案 0 :(得分:1)
使用coalesce()
函数。然后left join
您的table2
select t1.empno, t1.name
from table1 t1
left join table2 t2 on t2.empno = t1.empno
where
coalesce(coalesce(t1.date1, t1.date2), t2.date3) > current_date - 18 MONTHS) a