【发布时间】:2022-01-02 18:12:18
【问题描述】:
我想获取表格中缺少的 ID 号列表。
;WITH Missing (missnum, maxid)
AS
(
SELECT 1 AS missnum, (select max(id) from MYTABLE)
UNION ALL
SELECT missnum + 1, maxid FROM Missing
WHERE missnum < maxid
)
SELECT missnum
FROM Missing
LEFT OUTER JOIN MYTABLE on MYTABLE.id = Missing.missnum
WHERE MYTABLE.id is NULL
OPTION (MAXRECURSION 0);
缺少的身份证号码列表:
| id |
|---|
| 2 |
| 3 |
| 4 |
| 5 |
| 7 |
| 8 |
| 9 |
但我不希望列表显示所有单独的数字 - 仅包含两列的列表
我的输出应该是:
| from | to |
|---|---|
| 2 | 5 |
| 7 | 9 |
现在我可以看到我的问题还不够清楚。
我有一长串数以千计的数字;
2,3,4 .... 36 401,402,403 ... 807 1234,1235 ... 1240 等等
我想将它们呈现为;
| from | to |
|---|---|
| 2 | 36 |
| 401 | 807 |
| 1234 | 1240 |
【问题讨论】:
-
请标记您的数据库
标签: sql gaps-and-islands