將連接表中的重複資料進行清理並求和的SQL處理
P粉354948724
P粉354948724 2023-09-13 15:15:50
0
1
545

我正在從一個記帳系統中提取報告。這個系統有一個討厭的習慣,會在資料庫中放置重複項,而它會在內部處理這些重複項(而不是一開始就清理乾淨!)

以發票125的總計表為例:

+------------+-----------+----------+
| invoice_id | code      | amount   |
+------------+-----------+----------+
|        125 | sub_total | 300.0000 |
|        125 | tax       |  30.0000 |
|        125 | total     | 330.0000 |
|        125 | sub_total | 300.0000 |
|        125 | tax       |  30.0000 |
|        125 | total     | 330.0000 |
+------------+-----------+----------+

以及相同id的發票表

+-----+----------+
| id  | amount   |
+-----+----------+
| 125 | 330.0000 |
+-----+----------+

我想要為一個時期產生總銷售額和稅金(用於澳洲BAS)

我的最小工作範例查詢(如果資料乾淨的話可以工作)是

select sum(a.amount) as total_sales, sum(c.amount) as total_GST
from 7cn_invoices a 
    INNER JOIN 7cn_invoice_totals c ON a.id = c.invoice_id
where c.code = 'tax';

然而,由於總計表中有重複項,我得到的總銷售額是應該的兩倍。除了修補程式碼外,有什麼解決這個問題的最佳方法嗎?

P粉354948724
P粉354948724

全部回覆(1)
P粉511985082

你可以透過使用帶有DISTINCT的子查詢來刪除重複項

db<>fiddle 在這裡

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板