You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle WHERE子句问题:报表需于2点而非零点重置计数

解决Oracle报表班次统计2点重置计数问题

原查询依赖TRUNC(SYSDATE)取自然日零点作为时间基准,导致统计范围在零点就切换,无法满足2:00重置班次计数的需求。以下是调整后的查询语句:

SELECT NVL(SUM(QUANTITY), 0) AS TOTAL
FROM PP
WHERE CREATEDATETIME >= 
    CASE
        -- 当前时间在2:00-6:00,统计前一天16:00到当天2:00的班次数据
        WHEN SYSDATE BETWEEN TRUNC(SYSDATE) + 2/24 AND TRUNC(SYSDATE) + 6/24 THEN TRUNC(SYSDATE) - 1 + 16/24
        -- 当前时间在6:00-16:00,统计当天6:00到16:00的班次数据
        WHEN SYSDATE BETWEEN TRUNC(SYSDATE) + 6/24 AND TRUNC(SYSDATE) + 16/24 THEN TRUNC(SYSDATE) + 6/24
        -- 当前时间在16:00-次日2:00,统计当天16:00到次日2:00的班次数据
        ELSE TRUNC(SYSDATE) + 16/24
    END
AND CREATEDATETIME < 
    CASE
        WHEN SYSDATE BETWEEN TRUNC(SYSDATE) + 2/24 AND TRUNC(SYSDATE) + 6/24 THEN TRUNC(SYSDATE) + 2/24
        WHEN SYSDATE BETWEEN TRUNC(SYSDATE) + 6/24 AND TRUNC(SYSDATE) + 16/24 THEN TRUNC(SYSDATE) + 16/24
        ELSE TRUNC(SYSDATE) + 1 + 2/24
    END

逻辑说明

  • 通过CASE语句根据当前系统时间判断所属班次,动态生成统计的起始和结束时间
  • 彻底摆脱自然日零点的限制,确保只有在当天2:00之后,才会切换到6:00开始的新班次
  • 覆盖所有时间区间,保证每个班次的产量统计范围完全匹配需求

内容的提问来源于stack exchange,提问作者Alan Wilcox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:40:04