我有兩張表,發行和收據,我在其中發行和接收數量:
問題表:
| 命令 | 型別 | 數量 |
|---|---|---|
| OD12 | 一個 | 48 |
| OD19 | 一個 | 33 |
| OD12 | 乙 | 14 |
收據表:
| 命令 | 型別 | 數量 |
|---|---|---|
| OD12 | 一個 | 20 |
| OD19 | 一個 | 15 |
| OD12 | 乙 | 11 |
我想要的預期結果:
平衡:
| 命令 | 型別 | 數量 |
|---|---|---|
| OD12 | 一個 | 28 |
| OD19 | 一個 | 18 |
| OD12 | 乙 | 03 |
IssueTable 包含已發出訂單的詳細資訊,一個訂單可以有多個“型別”的產品。同樣,ReceiptTable 包含已完成和收到的訂單的詳細資訊。我想要一個余額表,它根據訂單和型別從收貨數量中減去發貨數量。
uj5u.com熱心網友回復:
您可以嘗試使用連接方法:
SELECT it.`Order`, it.Type, it.Qty - rt.Qty AS Qty
FROM IssueTable it
INNER JOIN ReceiptTable rt
ON rt.`Order` = it.`Order` AND rt.Type = it.Type;
這個答案假設每個訂單都有一個匹配的收據。如果沒有,該方法可能必須根據您的期望稍微改變。作為旁注,ORDER是 MySQL 中的保留關鍵字,您應該避免使用它來命名列和表。
uj5u.com熱心網友回復:
SELECT `Order`,
`Type`,
COALESCE(IssueTable.Qty, 0) - COALESCE(ReceiptTable.Qty, 0) Qty
FROM ( SELECT `Order`, `Type` FROM IssueTable
UNION
SELECT `Order`, `Type` FROM ReceiptTable ) TotalTable
LEFT JOIN IssueTable USING (`Order`, `Type`)
LEFT JOIN ReceiptTable USING (`Order`, `Type`);
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=cafd416abcbf7ab31f54bf6efbd6566f
該查詢假定(Order, Type)在每個單獨的表中是唯一的。如果不是,則使用聚合子查詢,而不是表本身。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/404833.html
標籤:
下一篇:程式橫向總月銷售額
