Traitement SQL pour nettoyer et additionner les données en double dans les tables jointes
P粉354948724
P粉354948724 2023-09-13 15:15:50
0
1
546

Je récupère des rapports d'un système comptable. Le système a la fâcheuse habitude de mettre des doublons dans la base de données, qu'il gère en interne (plutôt que de les nettoyer en premier lieu !)

Prenons comme exemple le tableau total de la facture 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 |
+------------+-----------+----------+

Et le tableau des factures avec le même identifiant

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

Je souhaite générer le total des ventes et des taxes pour une période (pour le BAS australien)

Mon exemple de requête de travail minimal (qui fonctionnerait si les données sont propres) est

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';

Cependant, en raison de doublons dans le tableau des totaux, j'obtiens deux fois les ventes totales qu'elles devraient être. En plus de corriger le code, existe-t-il un meilleur moyen de résoudre ce problème ?

P粉354948724
P粉354948724

répondre à tous(1)
P粉511985082

Vous pouvez supprimer les doublons en utilisant une sous-requête avec DISTINCT

db<>violon ici

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal