1

如下表和查询给出了所需的结果。

SELECT col1, col2, col3, @a:=@a+(col2+col3) col4
FROM test
JOIN (SELECT @a:=0)t

col1 | col2 | col3 | col4
-------------------------
a    |  1   |  1   |  2
b    |  2   |  0   |  4
c    |  3   |  0   |  7
a    |  0   |  2   |  9

但是当我使用 group by 它时,它不能正常工作。你有什么好的解决办法吗?

SELECT col1, SUM(col2)col2, SUM(col3)col3, @a:=@a+SUM(col2+col3) col4
FROM test
JOIN (SELECT @a:= 0)t
GROUP BY col1

    col1 | col2 | col3 | col4
    -------------------------
    a    |  1   |  3   |  4
    b    |  2   |  0   |  2  << It will be 6
    c    |  3   |  0   |  3  << It will be 9

第一行提取正确。但是 row2 和 row3 没有像前面的例子那样计算前一行 col4 值。我不明白问题出在哪里!

4

1 回答 1

1

试试这个代码,它对我有用:)

SELECT col1, col2,col3, @a:=@a+(col2+col3) col4
FROM (select col1,sum(col2)col2,sum(col3)col3 from test group by col1) as tes
JOIN (SELECT @a:= 0)t

我为你做了一个小提琴:

http://sqlfiddle.com/#!2/9b3ac/44

希望能帮助到你 ;)

于 2013-08-19T17:25:51.363 回答