4

1列のテーブルがあります。列は次のようになります。

1
2
3
4
5
...

以前の値が追加された別の列を表示するクエリを作成したいと思います。それで:

1 1 ( 0 + 1 )
2 3 ( 1 + 2 )
3 5 ( 2 + 3 )
4 7 ( 3 + 4 )
5 9 ( 4 + 5 )
9 14 (5 + 9)
45 54 ( 9 + 45)

それを達成するためにどのようにクエリを構築しますか?

基本的に、との間だけが必要differenceです。ROW[X]ROW[X-1]

4

2 に答える 2

16
SELECT  a.val, (@runtot :=  a.val  + @runtot) AS rt, ( @runtot := a.val ) ne
FROM    Table1 a,(SELECT @runtot:=0) c

これは機能しているようです。各段階で変数を再初期化しようとしました。やってみて。

SQLFiddle デモ

于 2012-10-17T05:11:31.167 に答える
-1

試す

SELECT  a.int, (@runtot :=  a.int  + a.int - 1) AS rt
FROM    test a,(SELECT @runtot:=0) c

すなわち

1 1 ( 0 + 1 )
2 3 ( 1 + 2 )
3 5 ( 2 + 3 )
4 7 ( 3 + 4 )
5 9 ( 4 + 5 )

これにより、表示された出力が得られます

于 2012-10-17T04:33:58.813 に答える