我试图找到员工周年日期,增量为5年,10年15年等等,我能够得到结果,但我试图过滤在案例陈述中创建的'Anniversary_Year列只显示结果在今年,没有过去或未来的结果只需要即将发生的事情。
SELECT Employee,Hire_Date
CASE
WHEN DATEADD(year, 5, Hire_Date) >= GETDATE()
THEN DATEADD(year, 5, Hire_Date)
ELSE NULL
END AS '5_Year_Anniversary',
CASE
WHEN DATEADD(year, 10, Hire_Date) >= GETDATE()
THEN DATEADD(year, 10, Hire_Date)
ELSE NULL
END AS '10_Year_Anniversary',
CASE
WHEN DATEADD(year, 15, Hire_Date) >= GETDATE()
THEN DATEADD(year, 15, Hire_Date)
ELSE NULL
END AS '15_Year_Anniversary',
CASE
WHEN DATEADD(year, 25, Hire_Date) >= GETDATE()
THEN DATEADD(year, 25, Hire_Date)
ELSE NULL
END AS '25_Year_Anniversary'
FROM
MyTable
WHERE YEAR(Hire_Date) = YEAR(getdate())
使用WHERE
子句仅返回5年周年行。
SELECT Employee, Hire_Date,
cast(YEAR(getdate()) - YEAR(Hire_Date) as varchar(5)) + 'anniversary'
FROM MyTable
WHERE (YEAR(getdate()) - YEAR(Hire_Date)) % 5 = 0
and YEAR(getdate()) > YEAR(Hire_Date)