Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从后续行中减去值_Sql Server_Tsql - Fatal编程技术网

Sql server 从后续行中减去值

Sql server 从后续行中减去值,sql-server,tsql,Sql Server,Tsql,有一种情况,我需要通过从第一列中减去来生成第二列。有没有办法做到这一点 看起来你想要铅: 如果希望395作为最终值,可以添加默认值: select col1, lead(col1, 1, 396) over (order by col1) - 1 from t; 如果由于某种原因无法使用窗口函数,则可以基于ID列进行联接: 您只需要处理Id最大的行,因为它在第二列中有null。是否也有Id列或类似列?什么决定顺序?你看过超前/滞后吗?@jarlh是的,我看过。我已经更新了问题。

有一种情况,我需要通过从第一列中减去来生成第二列。有没有办法做到这一点

看起来你想要铅:

如果希望395作为最终值,可以添加默认值:

select col1, 
       lead(col1, 1, 396) over (order by col1) - 1
from t;

如果由于某种原因无法使用窗口函数,则可以基于ID列进行联接:


您只需要处理Id最大的行,因为它在第二列中有null。

是否也有Id列或类似列?什么决定顺序?你看过超前/滞后吗?@jarlh是的,我看过。我已经更新了问题。请阅读一些关于改进问题的提示。值将是动态的,我无法设置最终值。我在末尾得到空值。@VirenderThakur。这就是第一个版本所做的。很抱歉,我得到的最后一列为NULL@维伦德塔库。正当如果不希望为NULL,可以使用第二个版本或coalesce。
select col1, 
       lead(col1, 1, 396) over (order by col1) - 1
from t;
select mt1.col1, mt2.col1 - 1 col2
from myTable mt1
left join myTable mt2 on mt1.Id = mt2.Id - 1