SQL,每个客户向我们支付的总金额是多少?

时间:2018-01-04 12:00:17

标签: sql sql-server

我在这里遇到一些问题:我创建了5个表:客户,发票,行,产品和供应商。

任务问我:

  

每位客户向我们支付的总金额是多少?

以下评论:

  

要查找每位客户向我们付款的总金额,您需要加入   客户表与发票和行。按客户代码分组,总和   线的价格。余额只会显示客户是否欠我们钱。   此外,当您执行SUM时,还应该有一个group by语句。

我已经制作了一个代码,但因为感到困惑而陷入困境:

SELECT Invoice.CUS_CODE
FROM Invoice
    INNER JOIN Customer ON Invoice.CUS_CODE = Customer.CUS_CODE
    WHERE Invoice.INV_NUMBER IN (
    SELECT SUM(Line.LINE_PRICE)
FROM Line
INNER JOIN Invoice ON Invoice.INV_NUMBER = Line.INV_NUMBER
GROUP BY LINE_PRICE)
GROUP BY Invoice.CUS_CODE;

因此,我需要通过来自客户的CUS_CODE(客户代码)从发票表中对INV_NUMBER进行分组,并对分组的INV_NUMBER的LINE_PRICE求和。在CUS_CODE的最后一组。

提前谢谢你。

UPD:表

客户表

Customer table
线台
Line table
发票表
Invoice table

1 个答案:

答案 0 :(得分:2)

您似乎可以使用LEFT JOIN

来简化GROUP BY
SELECT CUS_CODE, CUS_LNAME, CUS_FNAME, SUM(Line.LINE_PRICE)
FROM Customer 
LEFT JOIN Invoice ON Invoice.CUS_CODE = Customer.CUS_CODE
LEFT JOIN Line ON Invoice.INV_NUMBER = Line.INV_NUMBER
GROUP BY CUS_CODE, CUS_LNAME, CUS_FNAME