M.I*_*M.F 1 sql-server-2008-r2
有下图的表格。
我的问题是从每个客户那里检索并获取发票表中的发票总和,发票表中的发票总余额以及退货支票到期和退货支票总余额的总和......
我想要使用内部连接从上面的 3 个表中得到如下图所示的答案
请帮帮我谢谢。
这可能不是最好的方法,但它会起作用。
SELECT c.ClientNo, c.ClientId, c.FullName, i.InvoiceTotalDue, i.InvoiceTotalBalance, r.ReturnChequeTotalDue, r.ReturnChequeTotalBalance, (i.InvoiceTotalBalance + r.ReturnChequeTotalBalance) AS TotalBalance
FROM Client_TBL c
LEFT JOIN (
SELECT ClientNo, SUM(TotalDue) AS InvoiceTotalDue, SUM(TotalBalance) AS InvoiceTotalBalance
FROM Invoice_TBL
GROUP BY ClientNo
) AS i ON c.ClientNo = i.ClientNo
LEFT JOIN (
SELECT ClientNo, SUM(TotalDue) AS ReturnChequeTotalDue, SUM(TotalBalance) AS ReturnChequeTotalBalance
FROM ReturnCheque_TBL
GROUP BY ClientNo
) AS r ON c.ClientNo = r.ClientNo
Run Code Online (Sandbox Code Playgroud)
当然,您可以将子查询更改为 CTE。但基本上,您将在加入前收集数据,否则您可能会得到错误的数据(例如,客户端 2 的发票信息将是原来的两倍,而 ReturnCheque 将是原来的 3 倍。)