过滤包含年份的列之间的特定日期

时间:2017-02-21 19:19:13

标签: sql-server

有一种简单的方法来过滤包含日期的两列之间的特定日期吗?我想展示在特定的开始和结束年份内雇用的所有员工。员工日历中有几年,其中一列显示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

我知道我错过了什么,或做错了什么。 感谢您的帮助,

1 个答案:

答案 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位于日历表上,则上述查询应按预期工作。