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

Oracle 11 SQL实现:从指定日期起查找首个Value非0的生效日期对应结果

Oracle 11g 实现向后查找首个非0汇总值SQL方案

实现逻辑

  • 先筛选符合条件(指定entity_id、生效日期≥起始查询日期)的表关联数据
  • 按生效日期分组计算每日value汇总值,过滤汇总结果为0的记录
  • 对剩余记录按生效日期升序排序,取第一条的汇总值即为所需结果

最终SQL代码

SELECT SUM_VALUE
FROM (
    SELECT SUM(pd.VALUE) AS SUM_VALUE, p.effective_date
    FROM TblA p
    INNER JOIN TblADetail pd ON p.id = pd.id
    WHERE TRIM(p.entity_id) = 123
      AND p.effective_date >= TO_DATE('03/10/2021', 'MM/DD/YYYY')
    GROUP BY p.effective_date
    HAVING SUM(pd.VALUE) != 0
    ORDER BY p.effective_date ASC
)
WHERE ROWNUM = 1;

补充说明

  • 该写法完全兼容Oracle 11g版本,未使用12c及以上才支持的FETCH相关语法
  • 如果需要兼容所有后续日期汇总均为0的场景,可在外层加NVL函数返回自定义默认值,示例:SELECT NVL(SUM_VALUE, 0) AS SUM_VALUE FROM (...)
  • 原样例数据执行该SQL时,3月10日汇总值为0会被HAVING条件过滤,剩下3月11日、3月12日的非0汇总值,按日期升序排序后取第一条即返回2000,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:36:02