多表查询求和重复问题解决————且一同解决了int类型减去null类型出现null的问题!!!

本文介绍了一种解决SQL中A、B、C三表联查时A表数据重复的问题,通过子查询及多层SELECT DISTINCT实现正确求和,避免了数据重复带来的错误结果,适用于一对多及一对一表关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有A、B、C三表 表与表关系为 A–>B 为一对多 A–>C为 一对一 三表联查求和 会出现 A表数据重复问题 解决办法 子查询 !! 三层 SELECT DISTINCT 亲测 有效

    SELECT DISTINCT (q.id),q.code,q.name,q.batch,SUM(q.total),(ISNULL(SUM(q.total),0)-ISNULL(q.total2, 0))AS total3 FROM
    (SELECT DISTINCT (w.id),w.code,w.name,w.batch,w.num as total,sum(w.num2)as total2  FROM(
    SELECT DISTINCT (so.id)AS oid, m.id,m.code,m.name,so.batch,so.num as num,oo.num as num2
    FROM base_storage_outrecord AS so
    LEFT JOIN base_material AS m
    ON so.mid = m.id
    LEFT JOIN busness_product_order_outdata AS oo
    ON so.orderno = oo.orderno 
    AND so.batch = oo.bacth
    AND so.mid = oo.mid
    WHERE  so.orderno = 1109987621 AND so.batch = 1)AS w
    GROUP BY w.id,w.code,w.name,w.batch,w.num)AS q
    GROUP BY  q.id,q.code,q.name,q.batch,q.total

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值