2
我有以下(大大简化)表结构:Django的选择不同的总和
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我写的,而不是I3 I2。它现在写得很好。
上述数据的预期结果是每个发票值的总和,仅用于一次。 Sum = I1 + I2 + I3 = 200 + 50 + 100 = 350
请添加您的预期或期望的结果。例如:I1总数= 600,I2总数= 150. – istruble 2010-03-21 01:48:13
我编辑了我的问题并添加了期望的结果,并在我写的数据中发现了错误。 – yoshi 2010-03-21 12:47:43