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

Oracle SQL指定年月范围查询返回0行问题排查

问题分析与解决方案

你的SQL语句返回0行的核心原因是WHERE子句逻辑矛盾:你同时要求refyear=2020和refyear=2019,单条数据的年份不可能同时满足这两个条件,自然没有匹配结果。

正确写法1:用OR组合年份区间条件

直接拆分两个合法的年月范围,用OR连接:

select count(*) from TABLEA 
where (refyear=2020 AND refmonth in (1,2,3,4,5)) 
OR (refyear=2019 AND refmonth in (1,2,3,4,5,6,7,8));

正确写法2:转为数值范围简化条件

将年份和月份拼接成YYYYMM格式的数值,用范围比较来简化语句:

select count(*) from TABLEA 
where (refyear * 100 + refmonth) between 201901 and 201908
OR (refyear * 100 + refmonth) between 202001 and 202005;

以上两种写法都能正确匹配你需要的2019年1-8月、2020年1-5月的数据,根据你提供的表数据,执行后会返回13条记录(2020年5条+2019年8条)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:03:13