我有 3 個表:訂單、退貨、地區
| 訂單編號 | 銷售量 | 區域ID |
|---|---|---|
| 1 | 100 | 1 |
| 2 | 200 | 2 |
| 3 | 200 | 2 |
| 回傳ID | 訂單編號 |
|---|---|
| 1 | 1 |
| 2 | 3 |
| 區域ID | 地區 |
|---|---|
| 1 | ? |
| 2 | 乙 |
我正在嘗試匯總總銷售額和退貨并按地區分組。我正在嘗試加入第三個退貨表,僅顯示退貨表中存在與 Order 表中的 OrderID 匹配并按 RegionID 分組的 OrderID 的銷售額總和,但我無法弄清楚.
我讓它在一個地區的總銷售額中使用:
SELECT r.Region, SUM(o.sales)
FROM Orders o
INNER JOIN Region r ON o.RegionID = r.RegionID
GROUP BY o.RegionID
編輯:
最終結果應如下所示:
| 區域ID | 總銷售額 | 總回報 |
|---|---|---|
| 1 | 100 | 100 |
| 2 | 400 | 200 |
| 3 | 0 | 0 |
uj5u.com熱心網友回復:
嘗試這個:
SELECT
r.RegionID
, SUM(o.sales) [Total Sales]
, SUM(CASE WHEN rt.orderId IS NOT NULL THEN o.sales ELSE 0 END) [Total Returns]
FROM Orders o
INNER JOIN Region r ON o.RegionID = r.RegionID
LEFT JOIN returns rt ON rt.orderId=o.orderId
GROUP BY o.RegionIDvalues
uj5u.com熱心網友回復:
在這里,您可以使用內部聯接來加入您的區域表。由于您沒有使用 OUTER JOIN,因此這只會考慮回傳的訂單。然后你像以前一樣做你的 SUM。這將允許您獲得總回報。對于總銷售額,我的解決方案是做一個子查詢來選擇所有的銷售額,不管有沒有回報。
SELECT REG.RegionID, SUM(O.SALES) AS Total_Sales, SUM(
SELECT O.SALES
FROM ORDER O
WHERE O.RegionID = REG.RegionID) AS Total_Returns
FROM ORDERS O
INNER JOIN REGION REG
ON O.RegionID = REG.RegionID
INNER JOIN RETURNS RET
ON O.OrderID = RET.OrderID
GROUP BY REG.RegionID
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/447893.html
下一篇:SQLServer重命名重復條目
