在SQL上的行之间获取Delta

时间:2017-07-07 22:49:05

标签: sql sql-server

我需要获得同一列上的行之间的差异。我可以使用lag()但是如何获得像pic的结果,如果名称改变了,那么开始计算为新的

enter image description here

1 个答案:

答案 0 :(得分:0)

这样的事情:

select t.*,
       (call_received - 
        lag(call_received, 1, 0) over (partition by agent_name order by id)
       ) as delta
from t;

请注意,这使用了很少见的三参数形式的lag()