首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL中每第6行之间的差异

SQL中每第6行之间的差异
EN

Stack Overflow用户
提问于 2016-09-21 19:31:18
回答 2查看 41关注 0票数 0

如何计算SQL Server 2016中每6行之间的差异?例如:

代码语言:javascript
复制
Col1     Col2   Diff
-----    ----   ----
1       2      NULL
2       4      NULL
3       6      NULL 
4       10     NULL
5       14     NULL 
6       18     NULL 
7       20     18
8       22     18
9       30     24
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-21 19:32:12

使用lag()

代码语言:javascript
复制
select t.*, col2 - lag(col2, 6) over (order by col1) as diff6
from t;

lag()lead()的第二个(不常用)参数是offset。如果值不在那里,它将返回NULL,这似乎正是您想要的。

票数 3
EN

Stack Overflow用户

发布于 2016-09-21 20:07:15

Lag()是最直接的选项。下面是使用JOIN的另一种方式。

代码语言:javascript
复制
WITH STable
AS
(
    SELECT col1, col2, ROW_NUMBER () OVER (ORDER BY col1) AS rownum FROM table
)

Select x.col1, x.col2, x.col2 - y.col2 AS diff
from STable x
Left Join STable y
ON x.rownum = y.rownum + 6
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39615382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档