亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何獲得列字段的兩行之間的差異?

如何獲得列字段的兩行之間的差異?

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 關注
  • 430 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號