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 ?
Vous pouvez supprimer les doublons en utilisant une sous-requête avec
DISTINCT
db<>violon ici