我正在使用sql server 2017.i正在计算小时数(reg小时和加班时间),并且我在reg hours列中获取所有小时数,如果常规小时数超过40,则必须加班。 ..什么是查询,我可以使用 例如....在一个表中,我有Empid,name,reghou,ourours。我从客户端获取了一个文件,其中包含Excel中的不同列(例如名称,小时等)。当我得到该Excel文件时,所有小时数都在小时数列中。因此,如果我得到42.83的小时数,我想将其分为40个小时的注册小时数和2.83个其他的小时数。该表应如下图所示
答案 0 :(得分:0)
DECLARE @EmployeeTimeSheet TABLE(EmployeeID INT, WorkedHours DECIMAL(18,2))
INSERT INTO @EmployeeTimeSheet
VALUES(1,8),
(1,8),
(1,8.5),
(2,8),
(2,8),
(1,8),
(3,8),
(1,8.5),
(2,8),
(3,8.5),
(1,8),
(1,8)
SELECT CASE WHEN SUM(WorkedHours) > 40 THEN 40 ELSE SUM(WorkedHours) END as Regular,
CASE WHEN SUM(WorkedHours) > 40 THEN (SUM(WorkedHours) -40) ELSE 0 END as OverTime
FROM @EmployeeTimeSheet
GROUP BY EmployeeID