首页 > 解决方案 > 查询员工是否有超过 14 天的假期查看谁

问题描述

我想要一个查询来检查employeea 一年中是否有超过 14 个假期。我想做一个trigger。重要的是,这总共是 14 天。但是employee一个月可能有 4 天,另一个月可能有 10 天。他不需要一气呵成。

我有这样的事情(查询)我正在使用 SQL Server

select employeeid
from time
where datediff(day, dateStart, dateEnd) >=1
and year(dateEnd) = 2018
and timecat= 'vacationdays'
group by employeeid
having count(*) >=13

我想我可以使用 datediff 并将这个计数设​​为 13 次。但它不起作用。

标签: sql

解决方案


您需要总结日期差异:

select employeeid, sum(datediff(day, dateStart, dateEnd) + 1) AS total
from time
where year(dateEnd) = 2018
and timecat= 'vacationdays'
group by employeeid
having SUM(datediff(day, dateStart, dateEnd) + 1) > 14

考虑+1inSUM因为datediff返回1两个日期,如'2018-11-16'and '2018-11-17',但如果这些是dateStartanddateEnd你希望结果是2
还有一个问题:如果不是同一年的日期dateStart会发生什么!dateEnd


推荐阅读