【问题标题】:SQL sum from different columns from different tables in one result一个结果中来自不同表的不同列的 SQL 总和
【发布时间】:2021-06-25 00:27:19
【问题描述】:

我希望使用 SQL 得到一个结果,该结果显示来自两个不同表的两个不同列的总和,并且是一个用于客户姓名的额外表。

表 1 客户ID, 客户名称

表 2 客户ID, 金额_债务, Amount_Debt_paid

表 3 客户ID, Amount_Open_Orders

我想要一个包含以下列的表格

客户 ID, 顾客姓名, TotalAmountDebt = Table2 SUM(Amount_Debt - Amount_Debt_paid), TotalAmountOpenOrders =Table3 SUM(Amount_Open_Orders),

我已经尝试了几个不同的查询几个小时,但我没有得到正确的结果,我希望有人为我提供解决方案,我认为这很简单,但我在这里遗漏了一些东西。

亲切的问候,

比约恩

【问题讨论】:

  • 你必须使用'left join',你在所有3个表中都有相同的Customer_ID吗?
  • 向我们展示一些示例表数据和预期结果 - 全部为格式化文本(不是图像)。同时向我们展示您当前的查询尝试。 IE。 minimal reproducible example.

标签: sql sum


【解决方案1】:

聚合前的总和:

select c.*, t2.*, t3.*
from customers c left join
     (select t2.customer_id, sum(t2.amount_debt) as amount_debt,
             sum(t2.amount_debt_paid) as amount_debt_paid
      from table2 t2
      group by t2.customer_id
     ) t2
     on c.customer_id = t2.customer_id left join
     (select t3.customer_id, sum(t3.Amount_Open_Orders) as Amount_Open_Orders
      from table3 t3
      group by t3.customer_id
     ) t3 
     on c.customer_id = t3.customer_id;

【讨论】:

  • 嗨,戈登,我已经尝试过您的代码,但出现了一些错误,请参阅我的回答。
  • @Björn 。 . . (1) 使用有效的表别名。 (2)如果你想展示这样的代码,答案不是放置代码的最佳位置。您可以编辑您的问题。你可以编辑我的答案。或者也许最好,你可以设置一个 dbfiddle。
  • 我更改了别名,现在它可以正常工作了。非常感谢您的帮助。亲切的问候比约恩
【解决方案2】:

我填写了建议的代码,现在出现错误

消息 102,级别 15,状态 1,第 7 行 '.' 附近的语法不正确。 消息 102,第 15 级,状态 1,第 12 行 'dbo' 附近的语法不正确。

代码:

enter code here
    SELECT        dbo.FI101CUSTOMER.*, dbo.FI101DEPT.*, dbo.HB101ORDER.*

    FROM            dbo.FI101CUSTOMER left JOIN 
    (select dbo.FI101DEPT.CUST_ID, SUM(dbo.FI101DEPT.BETRAG -            
    dbo.FI101DEPT.BETRAGZAHLUNG) as Value1
    from dbo.FI101DEPT
    group by dbo.FI101DEPT.CUST_ID
    ) dbo.FI101DEPT
    ON dbo.FI101CUSTOMER.CUST_ID = dbo.FI101DEPT.CUST_ID left join
    (select HB101ORDER.CUST_ID, SUM(HB101ORDER.bruttovkwert) as    Value2 
    from HB101ORDER
    group by dbo.HB101ORDER.CUST_ID
    ) dbo.HB101ORDER
    ON dbo.FI101CUSTOMER.CUST_ID = dbo.HB101ORDER.CUST_ID;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 2020-06-25
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    相关资源
    最近更新 更多