企业级实战:子查询中值少于主表空值处理

本文探讨了在数据库查询中使用IFNULL函数处理空值的方法,特别是在聚合函数求和时的应用。通过示例展示了如何从SAPHANA数据库中获取本月已收货款和本月底到期应收合计的数据。查询涉及多表连接、条件过滤和日期比较,揭示了在业务数据分析中的实用技巧。
摘要由CSDN通过智能技术生成

IFNULL((SELECT (-1* sum (aa.hsl)) from saphanadb.acdoca aa where aa.kunnr=kv.kunnr and aa.RCLNT=800 and aa.RBUKRS=kv.vkorg and left (aa.racct, 4) in ('1122')          and aa.XREVERSING=''          and FKART=''          and XREVERSED=''          and DRCRK='H'          and BLART !='ZV'          and to_char(aa.budat, 'YYYYMM') =to_char(current_Date, 'YYYYMM')          ), 0) "本月已收货款",          IFNULL((SELECT SUM(case when bd.shkzg='S' then DMBTR when bd.shkzg='H' then -1*DMBTR else 0 end) FROM SAPHANADB.BSID BD WHERE BD.MANDT=800 AND BD.KUNNR=KV.KUNNR AND BD.BUKRS=KV.VKORG          and bd.zfbdt<>'20220230'          AND TO_DATE(BD.BUDAT, 'YYYYMMDD')<=last_Day(current_Date) group by bd.kunnr, bd.bukrs), 0) "本月底到期应收合计",

 

 

直接上代码解析

假设条件主表是主客户数据集。有着全表数据,此时子查询通过查询,where后面语句匹配主表。

我们会发现。aa.kunnr=kv.kunnr,即左边的数据会等于出左表原来没有的结果,因为左表的kunnr的数量一定是小于右表的,这样查询出来,会出现空值,这是这种情况出现空值,一般在计算求和时为了处理空值,我们可以用ifnull来判别是否为空值,如果为空值,则为第二个值。不为空。则为第一个值,这里的空值被赋值为0,注意,分组有时候也出现空值,处理方式类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值