识别顺序记录或几乎顺序记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了识别顺序记录或几乎顺序记录相关的知识,希望对你有一定的参考价值。

我在包含发票编号记录的表中有一个名为发票的列。

我想确定发票编号是连续的或几乎连续的发票。顺序是1,2,3,4几乎连续是1或2的差]

而且我的发票编号记录为123124126128129133

答案

您可以尝试下面的查询,概念是前一个发票的顺序号+ 1应该是下一个,否则不是连续的。

create table #temp (InvNo int)
insert into #temp values (123), (124), (126), (128), (129), (133)

-- For sequential
SELECT
   [current].InvNo,
   [current].InvNo + 1,
   ISNULL([next].InvNo, 0) - [current].InvNo as Seq
FROM
   #temp       AS [current]
LEFT JOIN
   #temp       AS [next]
      ON [next].InvNo = (SELECT MIN(InvNo) FROM #temp WHERE InvNo > [current].InvNo)
      where [current].InvNo + 1 = ISNULL([next].InvNo, 0) 

-- For not sequential
SELECT
   [current].InvNo
FROM
   #temp       AS [current]
LEFT JOIN
   #temp       AS [next]
      ON [next].InvNo = (SELECT MIN(InvNo) FROM #temp WHERE InvNo > [current].InvNo)
      where [current].InvNo + 1 <> ISNULL([next].InvNo, 0)

结果如下所示。

enter image description here

以上是关于识别顺序记录或几乎顺序记录的主要内容,如果未能解决你的问题,请参考以下文章

项目进度管理

项目管理20 | 项目进度管理-排列活动顺序

简练软考知识点整理-排列活动顺序

MySql的执行顺序

如何识别 Oracle 中最近更新的记录?

进度管理