有一种简单的方法来过滤包含日期的两列之间的特定日期吗?我想展示在特定的开始和结束年份内雇用的所有员工。员工日历中有几年,其中一列显示CalendarYear(例如2001-2002,2005-2006等)。如果雇员是在02/01/2001和01/02/2002之间雇用的,我想在一个专栏中显示CalendarYear以显示为2001-2002。
select hr.EmployeeID
hr.EmploymentHireDate
,emp.CalendarBeginYear
,emp.CalendarEndYear
,emp.CalendarYear
,case when EmployeeHireDate between CalendarBeginYear and CalendarEndYear then CalendarYear else null
end as CalendarEnbdYear
from HR_Employee hr
join EmployeeCalendar em
hr.EmployeeID = emp.EmployeeID
我知道我错过了什么,或做错了什么。 感谢您的帮助,
答案 0 :(得分:0)
select
hr.EmployeeID
, hr.EmploymentHireDate
, emp.CalendarYear
from HR_Employee hr
inner join EmployeeCalendar em
on hr.EmployeeHireDate >= emp.CalendarBeginYear
and hr.EmployeeHireDate <= emp.CalendarEndYear
and hr.EmployeeID = emp.EmployeeID -- < there is a calendar for each employee?
我不知道为什么EmployeeId
会出现在日历上,但如果不是,请删除联接的最后一行,它应该返回您要查找的内容。如果EmployeeId
位于日历表上,则上述查询应按预期工作。