【问题标题】:Missing Id from table shown in two columns两列中显示的表中缺少 ID
【发布时间】: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


【解决方案1】:

使用表连接到自身

SELECT 
        t1.id AS [from],
        t2.id AS [to]
     FROM test t1
     JOIN
     test t2 ON t1.id < t2.id
WHERE t2.id - t1.id = 2 

db<>fiddle中的演示

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 2020-02-17
    • 2012-09-01
    • 1970-01-01
    相关资源
    最近更新 更多