查询剩余余额
我正在使用SQLITE 3.1.1
场景是ff:让我们假设总量是11。
公式应是:
总量-使用量=剩余
它应该是这样的:
预期结果:
另外,剩馀值不能低于0。
我现在有这个SQL查询,但是它没有得到下一个事务的剩余查询结果,而是总是以总量开始。
SELECT
filter_maintenance.maintenance_id,
filter_maintenance.stock_id,
filter_maintenance.quantity_used,
filter_maintenance.date_registered,
filter_maintenance.date_changed,
inventories.stock_name,
SUM(inventories_order.order_quantity) - filter_maintenance.quantity_used AS Remaining
FROM filter_maintenance
INNER JOIN inventories ON filter_maintenance.stock_id = inventories.stock_id
INNER JOIN inventories_order ON filter_maintenance.stock_id = inventories_order.stock_id
GROUP BY filter_maintenance.maintenance_id
这是我目前的输出:
非常感谢你的帮助。提前谢谢你。
发布于 2018-01-09 13:20:40
由于您使用的是sqllite,并且没有窗口函数,所以您需要使用一个自连接。我假设maintenance_id
是filter_maintenance
中的主键。
SELECT
filter_maintenance.maintenance_id,
filter_maintenance.stock_id,
filter_maintenance.quantity_used,
filter_maintenance.date_registered,
filter_maintenance.date_changed,
inventories.stock_name,
sum(inventories_order.order_quantity) - filter_maintenance.sum_quantity_used AS Remaining
FROM
(
SELECT fm1.*,
sum(fm2.quantity_used) AS sum_quantity_used
FROM filter_maintenance fm1
INNER JOIN filter_maintenance fm2 ON fm1.stock_id = fm2.stock_id and
fm1.date_registered >= fm2.date_registered
GROUP BY fm1.maintenance_id
) filter_maintenance
INNER JOIN inventories ON filter_maintenance.stock_id = inventories.stock_id
INNER JOIN inventories_order ON filter_maintenance.stock_id = inventories_order.stock_id
GROUP BY filter_maintenance.maintenance_id
https://stackoverflow.com/questions/48168677
复制相似问题