【发布时间】:2018-03-25 15:27:47
【问题描述】:
我需要在 SQL 中按组查找连续的数字。
示例: 表1
id | group | result (group id)
-------+---------+-----------------------------
1 | a | 1
2 | a | 1
3 | a | 1
4 | a | 1
5 | a | 1
8 | a | 2
10 | a | 3
13 | a | 4
14 | a | 4
15 | a | 4
16 | a | 4
20 | a | 5
2 | b | 1
3 | b | 1
4 | b | 1
5 | b | 1
8 | b | 2
10 | b | 3
13 | b | 4
16 | b | 5
20 | b | 6
我找到了这个解决方案 (Group by numbers that are in sequence),但我不能为团体保留它
WITH firstrows AS
(SELECT id, ROW_NUMBER() OVER (ORDER BY id) groupid
FROM Table1 a
WHERE id - 1 NOT IN (SELECT b.id FROM Table1 b)
)
SELECT id,
(SELECT MAX(b.groupid)
FROM firstrows b
WHERE b.id <= a.id
) groupid
FROM Table1 a
【问题讨论】:
-
请同时包含预期的输出。
-
为什么ID 5的结果是2?那不应该包含在 1 组中吗?
-
抱歉,数据已更正!
标签: sql sql-server