我有两个查询返回以下数据:
结果1:
2017-02-27 10:54:30.000
2017-02-27 10:55:30.000
2017-02-27 10:59:30.000
2017-02-27 11:02:30.000
结果2:
2017-02-27 10:52:42.000 2017-02-27 10:55:00.000
2017-02-27 10:55:05.000 2017-02-27 10:55:43.000
2017-02-27 10:57:30.000 2017-02-27 11:00:12.000
2017-02-27 11:01:55.000 2017-02-27 11:02:57.000
将第二个结果集中的行视为时间间隔,让我们调用第一列' start'第二栏'结束'我需要的是创建某种映射并找出第二个结果集中有多少行没有匹配'在第一组。我的意思是......
以下是一个示例:查看第二个表的第一行R1。
2017-02-27 10:52:42.000 2017-02-27 10:55:00.000
如果第一个表中没有行,那么它的值将在起始值和结束值之间,那么我们将返回行R1。输出应该是所有这些行的计数。
感谢您的帮助!
答案 0 :(得分:2)
这里的一种方法是将包含间隔的表连接到第一个表。然后计算第二个表中的所有记录,其中第一个表中没有时间戳落在一个间隔之间。
SELECT COUNT(*)
FROM Result2 r2
LEFT JOIN Result1 r1
ON r1.dt BETWEEN r2.interval1 AND r2.interval2
WHERE r1.dt IS NULL
答案 1 :(得分:1)
如果第一个表中没有行,那么它的值将在起始值和结束值之间
这可以直接翻译成SQL:
select count(*) from Result2 r2
where not exists (
select * from Result1 r1
where r1.value between r2.start and r2.end
)