小编典典

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

sql

我正在使用SQL Server 2014。我有一个BookNo列为的表datatype int。该列包含以下数据

|BookNo|
1
2
3
4
5
10
12
13
25
26
27
28

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

1 to 5
10 to 13
25 to 28

任何帮助…


阅读 211

收藏
2021-04-22

共1个答案

小编典典

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

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);

[SQL小提琴演示]

2021-04-22