【发布时间】:2018-12-10 04:48:29
【问题描述】:
不确定是否已经问过这个或类似的问题,但我找不到。
在不更改值的情况下创建 ID 范围的要求。可以使用此架构:
declare @mytable as table(ID int, Val int)
insert into @mytable values
(1, 1),
(2, 1),
(3, 1),
(4, 2),
(5, 2),
(6, 2),
(7, 2),
(8, 1),
(9, 1),
(10, 1),
(11, 4),
(12, 4),
(13, 4),
(14, 4),
(15, 4),
(16, 5);
预期的结果是
StartID EndID Val
1 3 1
4 7 2
8 10 1
11 15 4
16 16 5
现在我可以通过运行 cursor 来实现这一点,如果 n 情况下记录的数量将是数百万,我认为 cursor 会更慢。我希望它可以使用一些复合查询来编写,但无法弄清楚如何。
所以我在编写这种查询时需要帮助,而且不用说,它不是学校/拼贴项目/作业。
【问题讨论】:
-
奇怪!!投反对票,不评论这里出了什么问题?
-
您使用的是哪个版本的 SQL Server? (2005 / 2016 / 等)
-
是SQL server 2017 express
标签: sql sql-server tsql gaps-and-islands sql-server-2017