我有一张表中包含许多记录的表。每次输入记录时,输入记录的日期也会保存在表格中。
我需要一个能够找到表中所有缺失记录的查询。
所以,如果我在表格中有这个:
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
谢谢。
答案 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');