以下是根据您的要求修改后的SQL查询语句:

SELECT
    name,
    bm,
    SUM(
        CASE
            WHEN bc LIKE '%白车身%' AND sb1dkjg = '缺卡' AND xb1dkjg = '缺卡' AND (gldspd IS NULL OR gldspd = '') THEN 480
            WHEN bc = '自由工时' AND sb1dksj IS NULL AND xb1dksj IS NULL AND (gldspd IS NULL OR gldspd = '') THEN 480
            ELSE 0
        END
    )/60.0 AS 旷工,
    ROUND(
        SUM(
            CASE
                WHEN bc = '自由工时' AND gzsc != 0 AND cqts = 1 THEN gzsc
                WHEN bc = '自由工时' AND gldspd LIKE '%出差%' AND gzsc = 0 AND cqts = 1 AND chuchai = 1 THEN 480
                WHEN bc = '自由工时' AND gzsc = 0 AND cqts = 0 AND chuchai = 1 THEN 480
                WHEN bc <> '自由工时' AND gldspd LIKE '%出差%' AND chuchai = 1 THEN 480
                WHEN sb2dksj IS NOT NULL AND xb2dksj IS NOT NULL AND chuchai <> 1 THEN TIMESTAMPDIFF(MINUTE, sb1dksj, xb1dksj)
                ELSE 0
            END
        )/60.0,1) AS 差旅月工时
FROM Test_kqzhb
WHERE rq BETWEEN '2023-09-01' AND '2023-09-25' AND name = '蔡号强'
GROUP BY name, bm;

这个查询语句会根据您的要求,如果上班2打卡时间(sb2dksj)和下班2打卡时间(xb2dksj)不为空且出差标记(chuchai)不等于1,则差旅月工时将以下班1打卡时间(xb1dksj)减去上班1打卡时间(sb1dksj)来计算。

SQL 查询语句:计算旷工和差旅月工时

原文地址: http://www.cveoy.top/t/topic/z5h 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录