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