SQL技巧:阶梯式累减

来源:互联网 发布:汽车模型专卖店淘宝 编辑:程序博客网 时间:2024/05/17 02:47

SQL技巧:阶梯式累减

与阶梯式累加正好相反

 

--1 创建一个临时表,数据如下

SELECT * INTO #t
  
FROM ( SELECT 'a1' t1, 440 t2,1 t3 UNION
         
SELECT 'a2' t1, 445 t2,2 t3 UNION
         
SELECT 'a3' t1, 253 t2,3 t3 UNION
         
SELECT 'a4' t1, 509 t2,4 t3 UNION
         
SELECT 'a5' t1, 376 t2,5 t3 UNION
         
SELECT 'a6' t1, 142 t2,6 t3 ) a

SELECT * FROM #t

 

--2 结果
/*
t1   t2          t3
---- ----------- -----------
a1   440         1
a2   445         2
a3   253         3
a4   509         4
a5   376         5
a6   142         6
*/


--3 阶梯式累减

SELECT b1.*,
       b1.t2
-(SELECT TOP 1 t2 FROM #t b2 WHERE b1.t3<b2.t3) result
 
FROM  #t b1

 

--4 结果
/*
t1   t2          t3          result
---- ----------- ----------- -----------
a1   440         1           -5
a2   445         2           192
a3   253         3           -256
a4   509         4           133
a5   376         5           234
a6   142         6           NULL
*/