从 SQL Server 表中获取连续数字范围

Sha*_*bal 3 sql sql-server

我正在使用SQL Server 2014. 我有一个表,BookNo列为datatype int. 此列包含以下数据

|BookNo|
1
2
3
4
5
10
12
13
25
26
27
28
Run Code Online (Sandbox Code Playgroud)

我想要 Sql 查询中的连续数字范围。从上面的数据我的输出应该像

1 to 5
10 to 13
25 to 28
Run Code Online (Sandbox Code Playgroud)

任何帮助...

shA*_*A.t 5

我认为您可以使用这样的查询:

SELECT BookNo, ISNULL(LEAD(prev) OVER (ORDER BY BookNo) , (SELECT MAX(BookNo) FROM yourTable)) As toCon
FROM
    (
    SELECT *, LAG(BookNo) OVER (ORDER BY BookNo) prev, BookNo - LAG(BookNo) OVER (ORDER BY BookNo) diff
    FROM yourTable) dt
WHERE 
    (ISNULL(diff, 0) <> 1);
Run Code Online (Sandbox Code Playgroud)

【SQL 小提琴演示】