带条件的联接表(oracle)

1tuwyuhd  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(329)

我需要把这两张table合并到一张table上。
表1(orderid、employeeid、name、arrival\u time、departare\u time、comment、goodjob、reason、event\u date)
表2(orderid,goodjob)
goodjob是/否字段。
这些是我需要实现的:
如果表2中有一个记录,那么首先从那里得到好工作。如果不是,则取表1中的值。
表1每天喂食。我只想在最后一张表中列出最长的活动日期。
在最后一个表中,当goodjob字段为“no”时,将reason字段保留为null,如果为“yes”,则使用reason。
事件日期字段只是一个日期字段(yyyy-mm-dd)。我想有一个新的领域的创造时间。所以,如果有两个不同的代码,一个是“否”,另一个是“是”,我可以知道什么是最新的一个。
谢谢。

cbjzeqam

cbjzeqam1#

前三个条件听起来像是 join 和窗口功能:

select t1.*,
       coalesce(t2.goodjob, t1.goodjob) as goodjob,
       (case when t2.goodjob is null then t1.reason end) as reason
from (select t1.*, row_number() over (partition by ? order by event_date desc) as seqnum
      from table1 t1
     ) t1 left join
     table2 t2
     on t2.orderid = t1.orderid
where seqnum = 1;

这个 ? 在最终结果中,你想要什么单位,我怀疑你只想要一行。可能是的 orderid ,但问题还不清楚。
第四个条件没有意义,因为只为您关心的列返回一个值。

相关问题