gpt4 book ai didi

多个表上的 SQL 求和函数和计数函数会产生相乘的值

转载 作者:行者123 更新时间:2023-12-04 14:47:05 25 4
gpt4 key购买 nike

在无数次尝试把自己逼疯之后,我求助于你,希望有人愿意帮助我....

我有 4 个表:SO (ServiceOrder)、PR (PreRecording)、IH (InvoiceHeader) 和 IL (InvoiceLine),列和行如下所示:

SO(服务订单):

<表类="s-表"><头>SO.No_<正文>SO2101234SO2101235SO2101237SO2101239

公关(预录制):

<表类="s-表"><头>PR.No_公关专线PR.金额<正文>SO2101234150SO2101234218SO21012391110SO2101239240SO2101239340

IH(发票抬头):

<表类="s-表"><头>IH.No_IH.SO<正文>VF2134889SO2101234VF2134890SO2101235VF2134891SO2101239VF2134892SO2101234VF2134893SO2101239

IL(发票行):

<表类="s-表"><头>IL.DocNo_IL.LineNoIL.LineAmount<正文>VF2134889155VF2134889223VF2134890112VF2134890234VF2134890387VF21348911114VF2134892153VF2134892225VF2134892317VF2134892415VF2134893143VF2134893238

关系:

  • PR.No_ = SO.No_
  • IH.SO = SO.No_
  • IL.DocNo_ = IH.No_

期望的结果:

<表类="s-表"><头>SO.No_PR.SumAmountIH.SumAmount<正文>SO210123468188SO21012350133SO210123700SO2101239190195

用我通常的简单内部/外部/连接我没有成功,很明显有些 SELECT的应该是嵌套的。用一个简单的查询来组合SOPR , 我没有问题。用一个简单的查询来组合SOIH , 我没有问题。但是,当我尝试设置一个查询以在一个输出中获取所有这些内容时,由于在多个表中使用/找到的行,它变得困惑并且值开始成倍增加。

提前致谢....

最佳答案

您可以简单地嵌套您的查询,以便执行外部 SELECT来自平坦的内部SELECT .如果您的 RDBMS 版本不支持 WITH,这也适用CTE。

保留 NULL 的行值,我使用了LEFT JOINS还有 COALESCE 函数获取0作为结果而不是 NULL ,正如您想要的结果。

   SELECT PRGRP.No_, 
COALESCE(PRGRP.SumAmount, 0) AS PRAmount,
COALESCE(SUM(IL.LineAmount), 0) AS ILAmount
FROM ( SELECT SO.No_, SUM(PR.Amount) AS SumAmount
FROM ServiceOrder SO
LEFT JOIN PreRecording PR
ON PR.No_ = SO.No_
GROUP BY SO.No_
) PRGRP
LEFT JOIN InvoiceHeader IH
ON IH.SO = PRGRP.No_
LEFT JOIN InvoiceLine IL
ON IL.DocNo_ = IH.No_
GROUP BY PRGRP.No_

结果:

<表类="s-表"><头>没有_PR金额ILAmount<正文>SO210123468188SO21012350133SO210123700SO2101239190195

Full MySQL example in this db<>fiddle .

关于多个表上的 SQL 求和函数和计数函数会产生相乘的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69831758/

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