提取未知日期

时间:2016-11-10 22:21:00

标签: sql oracle

我有两个表,Employees和Job_History。这两个表有三列相同:employee_id,job_id和department_id。

我需要显示Employees表中的last_name和department_id,以及每位员工达到20周年工作周年的日期。

员工开始工作的日期位于Job_History表的start_date中。周年纪念日需要显示格式:1月23日,1928年。

    select e.last_name, e.department_id, count(*) as "20 Year Anniversary"
    from job_history l
    inner join employees e on e.department_id = l.department_id
    group by e.department_id, e.last_name
    having count(*) = l.start_date + 20;

现在,当我运行它时,它告诉我这不是一个组功能。我如何将其更改为正确的语法?

1 个答案:

答案 0 :(得分:1)

不确定为什么要计算任何东西,不要介意将计数与日期进行比较。将20添加到日期会增加20个

这可能更接近你想要的东西:

select e.last_name, e.department_id,
  add_months(min(jh.start_date), 240) as "20 Year Anniversary"
from employees e
inner join job_history jh
on jh.employee_id = e.employee_id
group by e.employee_id, e.last_name, e.department_id;

表之间的连接仅在emoloyee_id上​​,因为您想要任何部门中任何工作的最早开始日期(大概)。

一旦你有了最早的约会,你可以增加20年,即240个月。

您可以阅读有关如何将日期格式化为字符串in the documentation