Ich rufe Berichte aus einem Buchhaltungssystem ab. Das System hat die unangenehme Angewohnheit, Duplikate in der Datenbank abzulegen, die es intern verarbeitet (anstatt sie überhaupt zu bereinigen!)
Nehmen Sie als Beispiel die Gesamttabelle der Rechnung 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 | +------------+-----------+----------+
Und die Rechnungstabelle mit derselben ID
+-----+----------+ | id | amount | +-----+----------+ | 125 | 330.0000 | +-----+----------+
Ich möchte den Gesamtumsatz und die Steuern für einen Zeitraum generieren (für australisches BAS)
Meine minimale funktionierende Beispielabfrage (die funktionieren würde, wenn die Daten sauber sind) ist
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';
Aufgrund von Duplikaten in der Gesamtsummentabelle erhalte ich jedoch den doppelten Gesamtumsatz, der sein sollte. Gibt es außer dem Patchen des Codes eine beste Möglichkeit, dieses Problem zu lösen?
你可以通过使用带有
DISTINCT
的子查询来删除重复项db<>fiddle 在这里