0

我在 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

我想知道如何进行查询,但结果是例如。“clv_cuotas=115”。因此是结果。

  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
4

1 回答 1

0

在不重做查询本身的情况下,问题是运行总余额需要 116 才能获得正确的余额,只有在计算值之后,您才能删除它们。因此,包装一个查询,例如:

select PQ.*
   from  ( your existing query )  PQ
   where PQ.clv_cuto = 115

这样,内部行是根据所有 clv_cuto 值计算的,并且仅在事后排除。

注意:这应该会显示您期望从第一个查询中获得的正确余额,只返回这 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;
于 2014-12-24T18:06:52.983 回答