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

Oracle SQL编写where子句出现missing right parenthesis缺失右括号错误

问题原因

  • 语法错误根源:GROUP BY 是聚合分组子句,属于独立的查询语法模块,不能嵌套在 WHERE 条件块中,WHERE 仅用于行级数据过滤,你将GROUP BY写在WHERE的条件括号里直接触发了括号匹配语法报错。
  • 逻辑不匹配:你当前写的条件和期望实现的逻辑完全相反,你写的是a.date IS NOT NULL时匹配sysdate BETWEEN b.date AND b.date2,但你期望的是该场景下匹配NOT BETWEEN逻辑。

正确写法

WHERE
  -- 通用过滤条件提前,减少冗余判断
  b.per_id IS NOT NULL
  AND (
    -- 分支1:a.date为空时,要求sysdate在b的日期区间内
    (a.date IS NULL AND sysdate BETWEEN b.date AND b.date2)
    OR
    -- 分支2:a.date不为空时,要求sysdate不在b的日期区间内
    (a.date IS NOT NULL AND sysdate NOT BETWEEN b.date AND b.date2)
  )
-- GROUP BY 需作为独立子句放在WHERE之后,有聚合需求时保留即可
GROUP BY b.per_id

语法说明

  • 所有行级过滤逻辑统一放在WHERE块内,分组逻辑单独后置,符合SQL标准语法规范
  • 条件分支严格匹配你需要的业务逻辑,没有冗余重复判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 22:36:03