使用SQL查找数据库记录中的间隙(缺少记录)
发布时间:2020-05-24 12:30:27 所属栏目:MsSql 来源:互联网
导读:我有一个连续每小时记录的表.每小时都有一些价值.我想要一个T-SQL查询来检索丢失的记录(缺少时间,间隙).因此,对于下面的DDL,我应该获得缺失小时的记录04/01/2010 02:00 AM(假设日期范围在第一个和最后一个记录之间).使用SQL Server 2005.首选基于集合的查询.
|
我有一个连续每小时记录的表.每小时都有一些价值.我想要一个T-SQL查询来检索丢失的记录(缺少时间,间隙).因此,对于下面的DDL,我应该获得缺失小时的记录04/01/2010 02:00 AM(假设日期范围在第一个和最后一个记录之间).使用SQL Server 2005.首选基于集合的查询. DDL:
CREATE TABLE [Readings](
[StartDate] [datetime] NOT NULL,[SomeValue] [int] NOT NULL
)
INSERT INTO [Readings]([StartDate],[SomeValue])
SELECT '20100401 00:00:00.000',2 UNION ALL
SELECT '20100401 01:00:00.000',3 UNION ALL
SELECT '20100401 03:00:00.000',45
解决方法假设所有记录都是精确的小时:WITH q(s,e) AS
(
SELECT MIN(StartDate),MAX(StartDate)
FROM Readings
UNION ALL
SELECT DATEADD(hour,1,s),e
FROM q
WHERE s < e
)
SELECT *
FROM q
WHERE s NOT IN
(
SELECT StartDate
FROM Readings
)
OPTION (MAXRECURSION 0) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
