繁体   English   中英

如何在列中找到缺失的序列? sql 服务器

[英]How can I find the missing sequence in column? sql server

我只想获得缺少的连续数字序列(星期几),(我找到了使用with但在我的情况下我不喜欢使用它的解决方案)

是否有任何解决方案可以从包含 1 到 7 的连续数字的列中找到缺失的序列。

举个例子:

DayId

  1
  2
  3
  4
  5

预期结果应显示:

MissingDays

  6
  7

另一个例子:

DayId

  1
  2
  3
  4
  5
  7

预期结果应显示:

MissingDays

  6

如果缺少的数字只是一个数字而不是序列,则此查询将返回正确的结果,因为我使用了top 1 ,如何返回缺少的序列?

SELECT top 1 dayId + 1 available_id
  FROM days t
 WHERE NOT EXISTS
(
  SELECT * 
    FROM days
   WHERE dayId = t.dayId+1
)
 ORDER BY dayId



  

你需要一个日期列表。 您可以手动定义它并使用left join

select v.dayid
from (values (1), (2), (3), (4), (5), (6), (7)
     ) v(dayid) left join
     days d
     on d.dayid = v.dayid
where d.dayid is null;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM