出勤时间

雇员表出勤表中,只有一个字段为上班总工时,需要计算出正常上班工时,缺勤工时和加班工时。

代码
CREATE   FUNCTION   [ dbo ] . [ udf_WorkingHours ]
(   
)
RETURNS   @WorkingHours   TABLE ( [ WorkTicketId ]   INT , [ OperatorDate ]   DATETIME , [ NormalWorkTime ]   DECIMAL ( 18 , 6 ), [ AbsentationTime ]   DECIMAL ( 18 , 6 ), [ OverTime ]   DECIMAL ( 18 , 6 ))
AS
BEGIN
    
INSERT   INTO   @WorkingHours  
    
SELECT   DISTINCT   [ WorkTicketId ] , [ OperatorDate ] ,
    
-- 正常工时
    ( CASE   WHEN  ( ISNULL ( [ Presence ] , 0 <   8 THEN   [ Presence ] WHEN  ( ISNULL ( [ Presence ] , 0 >=   8 THEN   8   END ),
    
-- 缺勤工时
    ( CASE   WHEN  ( ISNULL ( [ Presence ] , 0 <   8 THEN  ( 8 -   [ Presence ] WHEN  ( ISNULL ( [ Presence ] , 0 >=   8 THEN   0   END ),            
    
-- 加班工时
    ( CASE   WHEN  ( ISNULL ( [ Presence ] , 0 <=   8 THEN   0   WHEN  ( ISNULL ( [ Presence ] , 0 >   8 THEN  ( [ Presence ] -   8 END )            
    
FROM   [ dbo ] . [ udf_WorkTicketRecorded ] ()
    
RETURN
END
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值