搜尋

首頁  >  問答  >  主體

將連接表中的重複資料進行清理並求和的SQL處理

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

以發票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粉354948724P粉354948724439 天前532

全部回覆(1)我來回復

  • P粉511985082

    P粉5119850822023-09-14 11:15:40

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

    db<>fiddle 在這裡

    回覆
    0
  • 取消回覆