使用SQL查找数据库记录中的间隙(缺少记录)

前端之家收集整理的这篇文章主要介绍了使用SQL查找数据库记录中的间隙(缺少记录)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个连续每小时记录的表.每小时都有一些价值.我想要一个T-SQL查询来检索丢失的记录(缺少时间,间隙).因此,对于下面的DDL,我应该获得缺失小时的记录04/01/2010 02:00 AM(假设日期范围在第一个和最后一个记录之间).使用sql Server 2005.首选基于集合的查询.
  1. DDL:
  2. CREATE TABLE [Readings](
  3. [StartDate] [datetime] NOT NULL,[SomeValue] [int] NOT NULL
  4. )
  5. INSERT INTO [Readings]([StartDate],[SomeValue])
  6. SELECT '20100401 00:00:00.000',2 UNION ALL
  7. SELECT '20100401 01:00:00.000',3 UNION ALL
  8. SELECT '20100401 03:00:00.000',45

解决方法

假设所有记录都是精确的小时:
  1. WITH q(s,e) AS
  2. (
  3. SELECT MIN(StartDate),MAX(StartDate)
  4. FROM Readings
  5. UNION ALL
  6. SELECT DATEADD(hour,1,s),e
  7. FROM q
  8. WHERE s < e
  9. )
  10. SELECT *
  11. FROM q
  12. WHERE s NOT IN
  13. (
  14. SELECT StartDate
  15. FROM Readings
  16. )
  17. OPTION (MAXRECURSION 0)

猜你在找的MsSQL相关文章