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

Oracle右连接后加法返回空值,需保留右表基础值求助

解决右连接后加法返回空值的问题

问题出在右连接后,当左表子查询x中没有对应compte的记录时,x.mnt会是NULL,而数值与NULL相加的结果仍为NULL,导致丢失右表t的posdev基础值。

只需用COALESCE()函数将x.mnt的NULL值替换为0,即可保证加法运算正常保留右表的基础值,修改后的查询语句如下:

SELECT t.compte, t.posdev + COALESCE(x.mnt, 0)
FROM (
  SELECT compte,SUM(mntdev) as mnt FROM mvtc22
  WHERE compte IN ('11510198451','00610198451','40010198451','40010198453','00610198461','00101980081','00101980094',
  '00101980111','40010198461','40010198462','40010198466','40010198463')
  AND datoper BETWEEN '01/01/22' AND '06/01/22'
  GROUP BY compte
)x
RIGHT OUTER JOIN
(
  SELECT c.compte,c.posdev
  FROM v_sldoper c
  WHERE c.compte IN ('11510198451','00610198451','40010198451','40010198453','00610198461','00101980081','00101980094',
  '00101980111','40010198461','40010198462','40010198466','40010198463')
  AND datpos = '31/12/21'
)t
ON t.compte = x.compte

COALESCE(x.mnt, 0)的作用是返回参数列表中第一个非NULL的值:当x.mnt存在时用它的实际值,不存在时则取0,这样加法运算就能得到posdev的基础值(相当于加0),而非空值。

内容的提问来源于stack exchange,提问作者Alexandre Barrère

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:45:20