2015-10-25 41 views
1

enter image description here有没有办法在mysql视图中计算余额?

我想计算从MySQL平衡

200 
270 
295 
285 
270 
250 

我尝试,但不起作用

SELECT `id`, `in`, `out`,balance 
FROM (SELECT t.*, 
     @n := IF(@g <> id, 0, @n) + COALESCE(in,0) - COALESCE(out, 0) balance, 
     @g := id 
     FROM product_trans t, 
      (SELECT @n := 0) n, 
      (SELECT @g := 0) g ORDER BY id) q 

回答

0
SELECT t1.id, SUM(t2.`in` - t2.`out`) AS balance 
FROM tab t1 
JOIN tab t2 
    ON t2.id <= t1.id 
GROUP BY t1.id 
ORDER BY t1.id; 

SqlFiddleDemo

输出:

╔═════╦═════════╗ 
║ id ║ balance ║ 
╠═════╬═════════╣ 
║ 1 ║  200 ║ 
║ 2 ║  270 ║ 
║ 3 ║  295 ║ 
║ 4 ║  285 ║ 
║ 5 ║  270 ║ 
║ 6 ║  250 ║ 
╚═════╩═════════╝ 
0

你也可以使用一个变量来计算运行总和:

小提琴:http://sqlfiddle.com/#!9/edf9d/3/0

set @runsum:=0; 

select id, (@runsum := @runsum + `in` - `out`) as runner 
    from product_trans 
order by id; 

在MySQL之外大多数数据库,如Oracle或SQL服务器,您可以使用分析函数。

相关问题