使用select from another column更新列

时间:2017-01-20 08:48:15

标签: sql oracle

我有两个表,情况如下:一个表跟踪公司的员工,例如,在最简单的情况下只有id,如果员工在建筑物中,则检查是或否。另一张表记录了离开建筑物的员工的所有事件。

事件表有 ID || EVENT_DATE

雇员 ID ||内部

events表有同一员工的多个条目,因为他多次离开了大楼。

我需要使用leaving_date向employee表添加一列。 所以我通过获取事件的最大值来对事件表进行内部联接。问题是它不只需要最大条目。它需要多个条目。

SELECT A.id, MAX (event_date) EVENT_DATE 
FROM employee A
INNER JOIN events B
ON A.id= B.id
WHERE    B.id= A.id

GROUP BY id

1 个答案:

答案 0 :(得分:0)

我认为你想要做的是计算子查询中的leaving_date,然后将其加入employee表:

SELECT A.id,
       COALESCE(B.leaving_date, SYSDATE) AS leaving_date      -- and maybe other columns
FROM employee A                                               -- from employee
LEFT JOIN
(
    SELECT id, MAX(event_date) AS leaving_date
    FROM events
    GROUP BY id
) B
    ON A.id = B.id