【发布时间】:2021-03-16 07:30:41
【问题描述】:
我有三个表:Employee、Employer 和 Employer History。如果他们有有效的全职记录,我正在寻找一份员工名单,以及他们最近的全职雇主。
假设我有以下就业历史表:
Employee ID | Employer ID | Start Date | End Date | Status
---------------------------------------------------------------
1 | AA | 1/1/2019 | | Part-Time
1 | BB | 1/1/2000 | | Full-Time
2 | CC | 3/1/2019 | | Part-Time
2 | DD | 3/1/2000 | 5/15/2021 | Full-Time
以及 ID 为 1、2 和 3 的员工。
我从这里开始:
select employee.id, employer.id
from Employee employee left join EmploymentHistory eh on eh.employeeId = employee.id
left join Employer employer on eh.employerId = employer.id
但我不知道该员工是否没有在职雇主,然后给我一个空雇主 ID。如果他们有一个有效的(如无结束日期)全职工作历史记录,给我最近的,如果他们没有有效的全职记录,那么给我最近的部分-第一次。
我开始进入带有子查询的循环,并尝试根据最大开始日期进行选择,但我有点转过身来。
最后,我希望结果看起来像这样:
Employee ID | Employer ID
---------------------------
1 | BB |
2 | CC |
3 | <null> |
这可能吗?
【问题讨论】:
-
仅供参考
case是一个表达式而不是一个语句。
标签: sql sql-server tsql