当一列为空时,在db2中使用另一列

时间:2019-11-15 01:59:20

标签: sql database db2

我有两个需要与公用记录相交的表。

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语法编写最佳查询,请您帮帮我吗?

1 个答案:

答案 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