我有两个表,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;
现在,当我运行它时,它告诉我这不是一个组功能。我如何将其更改为正确的语法?
答案 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。