我正在尝试根据每年工作的时间来计算某人提供的服务年。从雇用日期到每年的周年纪念日,必须超过2080年。以下是我设置SQL每年设置小时的方式,但必须更新日期并每年运行。有一个更简单的方法吗?我可以有一个SQL总结了2080年以上的人工作了多少年?
SELECT Sum(hours)
FROM hours_txn
WHERE EMPNO = 1824 and Type = 'WRK'
and TransactionDate between '1989-04-15 00:00:00' and '1990-04-15 00:00:00'
由于要删除硬编码的"雇用日期",因此您需要实现某种方法来计算它。在下面的查询中,我使用(手动设置)变量来说明您的其余查询可能是什么样的:
begin
declare @hiredate datetime
set @hiredate = '1989-04-15'
select count(*)
from hours_txn
where EMPNO = 1824 and Type = 'WRK'
group by datediff(y, @hiredate, TransactionDate)
having sum([hours]) > 2080
end
go
此group by
每年提供1个记录,having
过滤到" 2080小时以上的年",而count(*)
,嗯,它很重要:)