【发布时间】:2018-02-12 21:02:38
【问题描述】:
我在这里看到过其他类似的问题,但它们并不能完全满足我的需求,至少我是这么认为的。
我有一个包含以下列的 [reciepts] 表: 收据ID, 客户ID, 数量 ...
让我们说:
我有 5 份来自客户 1 的未付款收据:
reciept_id: 1 | Ammount: 110€
reciept_id: 2 | Ammount: 110€
reciept_id: 3 | Ammount: 130€
reciept_id: 4 | Ammount: 110€
reciept_id: 5 | Ammount: 190€
所以,客户 1 付给我 220 欧元。
现在我需要选择最旧的收据,直到满足这 220 欧元的总和,但只能按顺序排列,例如(收据 1 + 收据 2)而不是(收据 1 + 收据 4)。
你能帮我找到最好的查询吗,或者至少给我指出最好的答案?
提前致谢:)
【问题讨论】:
-
MySQL 还是 SQL 服务器?
-
高于
220的行是什么情况? -
抱歉,这是 SQL-Server @Raymond Nijland
-
@Badiparmagi,如果存在高于 220 的行,则查询中不应返回任何值。谢谢你的问题。
-
我将创建另一个列,其中包含“支付金额”。我将现有的“金额”列称为“应付金额”。程序:选择最旧的未完全支付的收据,并尽可能多地支付:添加到“应付金额”并从“已支付金额”中减去。以此类推,一步一步,直到没有钱支付到期金额。我不会担心这需要多次查询。
标签: sql-server