簡體   English   中英

SQL中每6行之間的差異

[英]Difference between every 6th row in SQL

如何計算SQL Server 2016中每第6行之間的差異? 例如:

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

使用lag()

select t.*, col2 - lag(col2, 6) over (order by col1) as diff6
from t;

lag()lead()的第二個參數(並且不經常使用lead()是偏移量。 如果該值不存在,它將返回NULL ,這似乎正是您想要的。

Lag()是直接選項。 下面是使用JOIN的另一種方法。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM