一些案例陈述问题

时间:2017-09-07 06:10:19

标签: sql oracle materialized-views

我有两个表格,其中包含

等数据

表1

Id  id_nm
1   per
2   per
3   org

table2

Id Lst_id l_nm  up_dt
1   22    abc   9/10/2015
1   21    abs   10/12/2016
2   21    xzc   10/12/2013
2   23    xyz   10/21/2013
2   23    xnh   01/12/2013

需要选择l_nm,其中lst_id为22.如果不存在,那么我们需要选择具有最新更新日期的l_nm

Id lst_id lnm   up_dt
1   22    abc   9/10/2015
2   23    xyz   10/21/2013

任何人都可以帮我实现它。

1 个答案:

答案 0 :(得分:0)

简单的方法是使用带有window子句的row_number来生成自定义排序顺序:

select id, lst_id, l_nm as lnm, up_dt
from (
  select id
        ,lst_id
        ,l_nm
        ,up_dt
        ,row_number()
         over (partition by id
               order by case when lst_id = 22 then 1 else 2 end
                       ,up_dt desc) as rn    
  from table2
) where rn = 1;