sql - 查询员工是否有超过 14 天的假期查看谁
问题描述
我想要一个查询来检查employee
a 一年中是否有超过 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 次。但它不起作用。
解决方案
您需要总结日期差异:
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
考虑+1
inSUM
因为datediff
返回1
两个日期,如'2018-11-16'
and '2018-11-17'
,但如果这些是dateStart
anddateEnd
你希望结果是2
。
还有一个问题:如果不是同一年的日期dateStart
会发生什么!dateEnd
推荐阅读
- c - 从 C 中引用不带前导下划线的外部符号
- c++ - 如何在 C++ 中将 TF_Tensor 转换为 opencv Mat?
- sql - 如果节点/分区发生故障,Spark 如何确保数据一致性?
- javascript - Javascript 编码 HTML 的 URL
- image - 从api获取图像以及如何在flutter中设置每个图像的动态高度?
- java - 为什么当我在我的应用程序中按下任何按钮时没有音频播放?
- r - 如何使用与相对丰度图相对应的颜色标签制作复合图例?
- javascript - 在没有 USB 和 Expo 的 iPhone 上执行 react-native 调试代码
- python - 避免 NumericProperty 的绑定递归
- sql - 如何从站点的 sql 数据库中删除病毒?