如何在一个表中查找丢失的记录

时间:2015-04-22 00:41:34

标签: sql

我有一张表中包含许多记录的表。每次输入记录时,输入记录的日期也会保存在表格中。

我需要一个能够找到表中所有缺失记录的查询。

所以,如果我在表格中有这个:

ID          Date          Location
1           4/1/2015      bld1
2           4/2/2015      bld1
3           4/4/2015      bld1

我想运行像

这样的查询
Select Date, Location
FROM [table]
WHERE (Date Between '4/1/2015' and '4/4/2015') and (Location = bld1)
WHERE Date not in (Select Date, Location FROM [table])

,结果应为:

 4/3/2015   bld1

谢谢。

1 个答案:

答案 0 :(得分:1)

我猜您使用的是SQL Server,下面是一个解决方案,该方法几乎适用于所有RDBMS。

要找到间隙,您需要在 min {{1}之间设置序列日期在表格中添加日期,您可以使用 max 生成它们,最后 recursive cte {{1 }} 到你的表并记录表格值为 left join 的记录:

架构:

cte

查询:

null

输出:

create table ttbl(ID int,[Date] date,Location varchar(10));
insert into ttbl values
(1,'4-1-2015','bld1'),
(2,'4-2-2015','bld1'),
(3,'4-4-2015','bld1');