我有两个表,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个月。
您可以在文档中阅读如何将日期格式化为字符串。