gpt4 book ai didi

mysql - 从主表和子表中获取总和

转载 作者:行者123 更新时间:2023-11-29 12:17:46 25 4
gpt4 key购买 nike

我希望我能够尽可能详细地解释情况:)

我们需要从 MySQL 表的主记录和子记录中获取总和。当前查询如下:

select  sum(
abs(ifnull(dt.N_RETAIL_PRICE,0 ) * ifnull(dt.N_QTY_NO ,0) )
+ ifnull(st.shipping_total,0 ) + ifnull(st.TaxAmount,0 ) - abs(ifnull(st.discount ,0))
) Total

FROM inv_store_transaction st

inner join inv_store_transaction_det dt

on st.OID = dt.INV_STORE_TRANSACTION

where st.INV_TRANSACTION_TYPE = 35
and st.INV_STORES = 1

我们怀疑的问题是,如果详细信息列超过 1 行,则主数据列将被累加多次。

例如,如果明细有 3 行,则其相关主数据的总和也将被取 3 次。

总而言之,我们需要对给定条件下的所有发票进行总计。

感谢任何帮助。

最佳答案

这个问题的解决方案是预先聚合详细数据:

select (sum(dt.amt) + sum((st.shipping_total) + sum(st.TaxAmount) - 
sum(abs(st.discount))
) Total
FROM inv_store_transaction st inner join
(select dt.INV_STORE_TRANSACTION,
abs(coalesce(dt.N_RETAIL_PRICE, 0) * coalesce(dt.N_QTY_NO, 0)) as dtamt
from inv_store_transaction_det dt
group by dt.INV_STORE_TRANSACTION
) dt
on st.OID = dt.INV_STORE_TRANSACTION
where st.INV_TRANSACTION_TYPE = 35 and st.INV_STORES = 1

除非所有行的其中一列都有 NULL 值,否则您无需测试 NULL

关于mysql - 从主表和子表中获取总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29500257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com