行之间的 SQL 差异

标签 sql database

我有一个像这样的 SQL 2008 数据库表

name      score
-----------------------
steve     207
steve     205
steve     200
steve     139

我想得到行之间的差异。 eqn = [行 - (行 + 1)] 所以我理想情况下希望它是,

steve 2   //207 - 205
steve 5   //205 - 200
steve 61  //200 - 139
steve 139 //139 - 0

最好的方法是什么? 谢谢!

最佳答案

这是一种方法

with cte as
(SELECT
   ROW_NUMBER() OVER (PARTITION BY table.name ORDER BY id) row,
   name,
   score
 FROM table)
SELECT 
   a.name ,
   a.score - ISNULL(b.score,0)
FROM
   cte a
   LEFT  JOIN cte b
   on a.name = b.name
    and a.row = b.row+1

关于行之间的 SQL 差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6299950/

相关文章:

python - 从数据库中收集数据,函数与类

sql - 在 SQL 中,当使用带有 'having' 子句的聚合函数时,该函数是否必须在 select 语句中?

mysql - 具有多个 JOIN 和比较的 SQL 查询

php - 在sql表中插入html

mysql - 从用户和关注用户中选择帖子的 SQL 查询不包括自己的帖子

mysql - 如何更新 mysql 文件中指定的用户?

sql - 如何优化这个 MySQL 查询

php - 使用 Laravel 在关系中的有序结果集

sql - SQL插入SQLRPGLE后无法更新文件

java - Liquibase 在执行变更集之前检查表名称长度