suchen

Heim  >  Fragen und Antworten  >  Hauptteil

SQL-Verarbeitung zum Bereinigen und Summieren doppelter Daten in verbundenen Tabellen

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?

P粉354948724P粉354948724546 Tage vor634

Antworte allen(1)Ich werde antworten

  • P粉511985082

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

    你可以通过使用带有DISTINCT的子查询来删除重复项

    db<>fiddle 在这里

    Antwort
    0
  • StornierenAntwort