我正在從一個記帳系統中提取報告。這個系統有一個討厭的習慣,會在資料庫中放置重複項,而它會在內部處理這些重複項(而不是一開始就清理乾淨!)
以發票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';
然而,由於總計表中有重複項,我得到的總銷售額是應該的兩倍。除了修補程式碼外,有什麼解決這個問題的最佳方法嗎?
你可以透過使用帶有
DISTINCT
的子查詢來刪除重複項db<>fiddle 在這裡