0

有谁知道是否有办法在 SQLite 中获得这个结果。

给定具有单列 x 的表,如下所示:

x |
--
1
4
5
2

我需要添加列 dx,这只是 x_i - x_{i-1} 的区别(第一个除外),如下所示:

x | dx |
--  --
1 | 0
4 | 3
5 | 1
2 | -3

非常感谢!

更新:鉴于有 id 列:

id | x |
--  --
1  | 1
2  | 4
3  | 5
4  | 2

是否可以获得:

id | x | dx |
--   --  --
1  | 1 | 0
2  | 4 | 3
3  | 5 | 1
4  | 2 | -3
4

1 回答 1

1

SQL 表没有与之关联的隐式顺序。您必须提供一个ORDER BY子句来对结果进行排序。

您会订购哪一列来定义减法的前导行?(提示:没有。)

id每个修订后的问题增加一列

sqlite> select id, x, (select t1.x - t2.x from t as t2 where id = t1.id - 1) from t as t1;
1|1|
2|4|3
3|5|1
4|2|-3

或者

sqlite> select id, x, coalesce((select t1.x - t2.x from t as t2 where id = t1.id - 1),0) from t as t1;
1|1|0
2|4|3
3|5|1
4|2|-3
于 2013-05-15T18:51:06.530 回答