我在mysql中有一个视图 我正在尝试进行查询并按clv_cuota对它们进行分组,但结果并不像预期的那样。 我试过了这个问题。
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
GROUP BY m.clv_cuota, m.`id_cuota` DESC;
但结果是:
id_cuota clv_cuota debe haber balance
21 115 0.00 150.00 100.00
20 115 50.00 0.00 250.00
18 115 100.00 0.00 100.00
23 116 50.00 0.00 150.00
19 116 100.00 0.00 200.00
我创建了一个SQLFiddle,您可以在其中获取包含示例数据的模式,您可以在其中测试查询
我的意思是,正确的结果就是这个 就好像每组clv_cuota都会开始一个新的独立平衡
id_cuota clv_cuota debe haber balance
21 115 0.00 150.00 0.00
20 115 50.00 0.00 150.00
18 115 100.00 0.00 100.00
23 116 50.00 0.00 150.00
19 116 100.00 0.00 100.00
我可以做错什么?
答案 0 :(得分:0)
SELECT id_cuota
, clv_cuota
, debe
, haber
, balance
FROM
( SELECT x.id_cuota
, x.clv_cuota
, x.debe
, x.haber
, CASE WHEN x.clv_cuota = @prev
THEN @balance := @balance+(x.debe-x.haber)
ELSE @balance := (x.debe-x.haber)
END balance
, @prev := x.clv_cuota
FROM cuotas x
, (SELECT @prev:='',@balance:=null) vars
ORDER
BY x.clv_cuota
, x.id_cuota
) a
ORDER
BY clv_cuota,id_cuota DESC
答案 1 :(得分:0)
这是我想要的查询。 THX。
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 = m.clv_cuota
) as balance
FROM `cuotas` m
GROUP BY m.clv_cuota, m.`id_cuota` DESC;