je la structure de tableau suivant (très simplifié):Django sélectionnez somme distincte
Order:
order_number = CharField
order_invoice_number = CharField
order_invoice_value = CharField
Un numéro de facture peut être identique à plus d'un ordre (ordre O1 a le numéro de facture I1, pour O2 a le numéro de facture I1 , etc.). Toutes les commandes avec le même numéro de facture ont la même valeur de facture.
Par exemple:
Order no. Invoice no. Value
O1 I1 200
O2 I1 200
O3 I1 200
04 I2 50
05 I3 100
Ce que je suis en train de faire est de faire une somme sur toutes les valeurs de la facture, mais ne pas ajouter les factures avec le même numéro plus d'une fois. La somme pour les éléments ci-dessus serait: 200 + 50 + 100.
J'ai essayé de faire cela en utilisant
s = orders.values('order_invoice_id').annotate(total=Sum('order_invoice_value')).order_by()
et
s = orders.values('order_invoice_id').order_by().annotate(total=Sum('order_invoice_value'))
mais je n'ai pas le résultat souhaité. J'ai essayé quelques solutions différentes à partir de questions similaires ici mais je n'ai pas pu obtenir le résultat souhaité.
Je n'arrive pas à comprendre ce que je fais de mal et ce que je dois réellement faire pour obtenir une somme qui utilise chaque valeur de facture une seule fois.
Edit:
Je viens de réaliser que je l'ai écrit à O5 I2 au lieu de I3. C'est écrit correctement maintenant.
Le résultat souhaité pour les données ci-dessus est la somme de la valeur de chaque facture, utilisée une seule fois. Somme = I1 + I2 + I3 = 200 + 50 + 100 = 350
Veuillez ajouter vos résultats attendus ou désirés. Par exemple: I1 total = 600, I2 total = 150. – istruble
J'ai édité ma question et ajouté le résultat désiré et j'ai également trouvé une erreur dans les données que j'ai écrites. – yoshi