日期:2014-05-17  浏览次数:20539 次

遇到一个查缺数的 SQL语句查询问题
表ABC
 字段:
 id      time                              anli
 1       2013/1/29 14:20:00      10
 2       2013/1/29 14:25:00      40
 3       2013/1/29 14:30:00      15
 4       2013/1/29 14:35:00      10
 5       2013/1/29 14:45:00      11
 6       2013/1/29 15:05:00      36
 
现在的情况是anli的值是5分钟一个数据自动入库的,但是他中间有的时候会丢失数据,比如第4条到第5条之间缺一条时间为2013/1/29 14:40:00的数据  第5条到第6条间缺3条数据时间分别为 2013/1/29 14:50:00 ,2013/1/29 14:55:00,2013/1/29 15:00:00,现在用我的想法是用SQL语句查出这里缺的数据时间并显示出来 比如 查出的结果:
 缺的数据
 2013/1/29 14:40:00
 2013/1/29 14:50:00
 2013/1/29 14:55:00
 2013/1/29 15:00:00 
请高手帮忙,我是VB弄的小程序来查的,但是弄到这里就不懂了 

------解决方案--------------------
加到红字的部分;WITH cte AS (
SELECT number,DATEADD(mi,number*5,(SELECT MIN([time])mtime FROM huang WHERE senid=XXXXX))[time]
FROM master.dbo.spt_values a 
WHERE a.number BETWEEN 1 AND 120  AND a.[type]='p'--120是一个小时12次5分钟,我定了检查10个小时,如果你要检查久一点,就再增大一点
)
SELECT [time] FROM cte
WHERE [time]<=(SELECT max([time]) FROM huang) 
EXCEPT  
SELECT [time] FROM huang a