提取未知日期



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

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

员工开始工作的日期位于Job_History表的start_date中。周年纪念日需要按照如下格式显示:January twenty-third, 1982。

    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;

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

不知道你为什么要计算任何东西,更不用说将计数与日期进行比较了。日期加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个月。

您可以在文档中阅读如何将日期格式化为字符串。

最新更新