在SQL中从另一个数据中减去一行数据

前端之家收集整理的这篇文章主要介绍了在SQL中从另一个数据中减去一行数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经收到了一些sql,我有几行数据,我想从上一行减去一行,并重复一遍.

所以这里是表:

CREATE TABLE foo (
  id,length
)
INSERT INTO foo (id,length) VALUES(1,1090)
INSERT INTO foo (id,length) VALUES(2,888)
INSERT INTO foo (id,length) VALUES(3,545)
INSERT INTO foo (id,length) VALUES(4,434)
INSERT INTO foo (id,length) VALUES(5,45)

我想要结果显示第三列,称为差异,它是从下一行减去一行,最后一行从零减去.

+------+------------------------+
| id   |length |  difference  |
+------+------------------------+
|    1 | 1090  |  202         |
|    2 |  888  |  343         |
|    3 |  545  |  111         |
|    4 |  434  |  389         |
|    5 |   45  |   45         |

我已经尝试了一个自我加入,但我不完全确定如何限制结果,而不是让它循环.我不能依赖于id值对于给定的结果集是顺序的,所以我不使用该值.我可以扩展模式以包含某种顺序值.

这是我试过的:

SELECT id,f.length,f2.length,(f.length - f2.length) AS difference
FROM foo f,foo f2

谢谢你的帮助.

@H_404_21@解决方法
这可能会帮助你(有点).

select a.id,a.length,coalesce(a.length - 
    (select b.length from foo b where b.id = a.id + 1),a.length) as diff
from foo a

猜你在找的MsSQL相关文章