当前位置: 代码迷 >> Sql Server >> SQL SERVER2008 紧邻两行相减
  详细解决方案

SQL SERVER2008 紧邻两行相减

热度:394   发布时间:2016-04-24 08:45:23.0
SQL SERVER2008 相邻两行相减
本帖最后由 cxm19900901 于 2015-09-24 17:46:53 编辑
表table1  ID    列2         列3
                  1      890
                  2      7890         
                  3       5632
 我想得到结果:   第一行列3 = null
                               第二行列3 = 第二行的列2  -    第一行的列2 
                              第三行 列三 =  第三行的列二 -  第二行的列2  



 
------解决思路----------------------
引用:
Quote: 引用:

with tb (id,c1) as
(
select 1,125 union all
select 2,232 union all
select 3,873 union all
select 4,1254 union all
select 5,5332
)
select distinct a.id,a.c1,(case when a.id=1 then null when a.id-b.id=1 then a.c1-b.c1 end)c2 from tb a,tb b where a.id-b.id=1 or a.id=1
--或者
--select id,c1,null as c2 from tb where id=1 union all
--select distinct a.id,a.c1,(a.c1-b.c1)c2 from tb a,tb b where a.id-b.id=1


id          c1          c3
----------- ----------- -----------
1           125         NULL
2           232         107
3           873         641
4           1254        381
5           5332        4078

我想得到的是 列3全部都插入数值,不是查询。能给详解?

之後再執行update就可以了
update A set c3=b.c2 from tb A left join tb1 b on a.id=b.id
  相关解决方案