查询谁查看员工的休假时间是否超过14天

时间:2018-11-16 10:53:49

标签: sql

我想查询一个employee一年是否有超过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次。但这不起作用。

2 个答案:

答案 0 :(得分:1)

您需要对日期差求和:

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中的SUM,因为datediff返回1的日期是两个日期,例如'2018-11-16''2018-11-17',但是如果这些是{ {1}}和dateStart您希望结果为dateEnd
仍然存在一个问题:如果2dateStart不是同一年的日期会发生什么!

答案 1 :(得分:0)

Count(*)仅计算行数。 这意味着如果有一个雇员在10天之一和4天之一中有两次休假,(我假设)这只是表中两行,而star则返回2。

您可以使用函数SUM()

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

我不知道您的表的结构,因此我不确定查询是否正确,但是这里有更多有用的链接。

https://www.w3schools.com/sql/sql_count_avg_sum.asp

Getting the sum of a datediff result