SQL查找行中的连续数字

SQL查找行中的连续数字,sql,Sql,我有一个查询返回一个显示 我需要列出行的最小和最大数量,如果它的顺序。这将产生以下输出: 请帮忙,我英语不好。谢谢 您可以使用交叉应用查找最大和最小行,并使用密集排列对序列进行分组 SQL更新感谢Tony简化了我的交叉应用程序;) 结果 这里的大多数人想要格式化文本,而不是图像(或图像链接)。您尝试过什么?显示您当前的查询尝试。您使用的是哪种dbms?@Ahmadwabi当然可以:)对于样本数据,1位数字比8位以上的数字更容易读取。帮助你变得容易!请原谅我不是最漂亮的SQLyou可以摆脱的交叉

我有一个查询返回一个显示

我需要列出行的最小和最大数量,如果它的顺序。这将产生以下输出: 请帮忙,我英语不好。谢谢


您可以使用交叉应用查找最大和最小行,并使用密集排列对序列进行分组

SQL更新感谢Tony简化了我的交叉应用程序;)

结果


这里的大多数人想要格式化文本,而不是图像(或图像链接)。您尝试过什么?显示您当前的查询尝试。您使用的是哪种dbms?@Ahmadwabi当然可以:)对于样本数据,1位数字比8位以上的数字更容易读取。帮助你变得容易!请原谅我不是最漂亮的SQLyou可以摆脱的交叉应用程序:使用T AS(选择*,DENSE_RANK()OVER(ORDER BY ID)-ID作为#TIPS中的Grp),test AS(选择MIN(ID)作为RangeStart,MAX(ID)作为RangeEnd,MIN(number)作为minNum,MAX(number)作为maxNum从T GROUP BY Grp中选择T.RangeStart作为ID,T.minNum,t.maxNum、f.tip、f.kalaf来自测试t内部连接#t.RangeStart上的TIPS f=f.id@谢谢你的简化。我更新了我的答案,使其更加优化。第一个,只是写在我的脑海里:)然而这两个作品。
declare @myt table (id int,number bigint, tip int, kalaf int)

insert into @myt
values
(971545701,4110897922,411,41108979),
(971578550,6131339133,613,61313391),
(971578992,6131339402,613,61313394),
(971578993,6131339403,613,61313394),
(971578994,6131339404,613,61313394),
(971579095,6131339627,613,61313396),
(971579100,6131339632,613,61313396),
(971579102,6131339634,613,61313396);

WITH T
AS (
    SELECT *
        ,DENSE_RANK() OVER (
            ORDER BY ID
            ) - ID AS Grp
    FROM @myt
    )
    ,test
AS (
    SELECT MIN(ID) AS RangeStart
        ,MAX(ID) AS RangeEnd
        ,MIN(number) AS minNum
        ,MAX(number) AS maxNum
    FROM T
    GROUP BY Grp
    )
SELECT t.RangeStart AS ID
    ,t.minNum
    ,t.maxNum
    ,f.tip
    ,f.kalaf
FROM test t
INNER JOIN @myt f ON t.RangeStart = f.id
Order by ID