为了账号安全,请及时绑定邮箱和手机立即绑定

如何获得列字段的两行之间的差异?

如何获得列字段的两行之间的差异?

C++
繁花如伊 2019-12-11 16:09:22
我有一张这样的桌子:rowInt  Value2       233       4517      109       0....列的rowInt值是整数,但顺序不相同。我可以使用以下sql通过rowInt列出值:SELECT * FROM myTable ORDER BY rowInt;这将按rowInt列出值。如何获得两行之间Value的差,结果如下:rowInt   Value Diff2        23    22    --45-233        45    -35   --10-459        0     -45   --0-4517       10    10    -- 10-0....该表在SQL 2005中(Miscrosoft)
查看完整描述

3 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

SELECT rowInt, Value,

       COALESCE(

       (

       SELECT TOP 1 Value

       FROM myTable mi

       WHERE mi.rowInt > m.rowInt

       ORDER BY

             rowInt

       ), 0) - Value AS diff

FROM  myTable m

ORDER BY

      rowInt



查看完整回答
反对 回复 2019-12-12
?
莫回无

TA贡献1865条经验 获得超7个赞

SQL Server 2012及更高版本支持LAG / LEAD函数来访问上一行或下一行。SQL Server 2005不支持此功能(在SQL2005中,您需要联接或其他方式)。


有关此数据的SQL 2012示例


/* Prepare */

select * into #tmp

from

(

    select 2  as rowint,      23 as Value

    union select 3,       45

    union select 17,      10

    union select 9,       0

) x



/* The SQL 2012 query */

select rowInt, Value, LEAD(value) over (order by rowInt) - Value  

from #tmp

LEAD(value)将返回“ over”子句中给定顺序的下一行的值。



查看完整回答
反对 回复 2019-12-12
  • 3 回答
  • 0 关注
  • 383 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信