我在mysql中有一个视图,运行良好并正确呈现结果。
SELECT m.`id_cuota`, m.`clv_cuota`, m.`debe`, m.`haber`,
(select sum(debe) - sum(haber)
from cuotas m2
where m2.id_cuota <= m.id_cuota
) as balance
FROM `cuotas` m
ORDER BY m.`id_cuota` DESC;
id_cuota clv_cuota debe haber balance
22 115 25.00 0.00 125.00
21 115 0.00 150.00 100.00
20 115 50.00 0.00 250.00
19 116 100.00 0.00 200.00
18 115 100.00 0.00 100.00
我想知道如何进行查询,但结果是例如。 &#34; clv_cuotas = 115&#34 ;.因此是结果。
id_cuota clv_cuota debe haber balance
22 115 25.00 0.00 25.00
21 115 0.00 150.00 0.00
20 115 50.00 0.00 150.00
18 115 100.00 0.00 100.00
答案 0 :(得分:0)
如果不重新查询您的查询,问题是运行的总余额需要116以获得适当的平衡,只有在计算了值之后,您才能删除它们。因此,请包含以下查询:
select PQ.*
from ( your existing query ) PQ
where PQ.clv_cuto = 115
这样,内部行就会根据所有clv_cuto值计算出来,并且只排除AFTER-the-fact。
注意:这应该显示您对第一个查询所期望的正确余额,只返回那115个条目。
要回答/澄清您的需求,因为您只关心帐户115的净活动,只需将其作为您的where子句。它需要应用于查询的内部和外部。
SELECT m.`id_cuota`, m.`clv_cuota`, m.`debe`, m.`haber`,
(select sum(debe) - sum(haber)
from cuotas m2
where m2.id_cuota <= m.id_cuota
AND m2.clv_cuota = 115
) as balance
FROM `cuotas` m
WHERE m2.clv_cuota = 115
ORDER BY m.`id_cuota` DESC;