Maison  >  Questions et réponses  >  le corps du texte

Traitement SQL pour nettoyer et additionner les données en double dans les tables jointes

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粉354948724P粉354948724402 Il y a quelques jours498

répondre à tous(1)je répondrai

  • P粉511985082

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

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

    db<>violon ici

    répondre
    0
  • Annulerrépondre