【发布时间】:2010-03-20 02:02:58
【问题描述】:
我有以下(非常简化的)表结构:
Order:
order_number = CharField
order_invoice_number = CharField
order_invoice_value = CharField
一个发票编号可以在多个订单上相同(订单 O1 的发票编号为 I1,订单 O2 的发票编号为 I1,等等)。具有相同发票编号的所有订单具有相同的发票价值。
例如:
Order no. Invoice no. Value
O1 I1 200
O2 I1 200
O3 I1 200
04 I2 50
05 I3 100
我要做的是对所有发票值进行总和,但不要多次添加具有相同编号的发票。以上各项的总和为:200+50+100。
我尝试使用
s = orders.values('order_invoice_id').annotate(total=Sum('order_invoice_value')).order_by()
和
s = orders.values('order_invoice_id').order_by().annotate(total=Sum('order_invoice_value'))
但我没有得到想要的结果。我从这里的类似问题中尝试了几种不同的解决方案,但我无法得到想要的结果。
我不知道我做错了什么以及我实际上应该做些什么来获得一个只使用每个发票价值一次的总和。
编辑:
我刚刚意识到在 O5 我写的是 I2 而不是 I3。现在写得很好。
上述数据的预期结果是每个发票价值的总和,仅使用一次。总和 = I1+I2+I3 = 200+50+100 = 350
【问题讨论】:
-
请添加您预期或期望的结果。例如:I1 总计 = 600,I2 总计 = 150。
-
我编辑了我的问题并添加了所需的结果,还发现我写的数据有错误。