现在做一个数据丢失的统计工作,比如说我的表table中有,“井号,日期,压力,温度”井号   日期                        压力        温度
港1    2010-9-16 00:00:00          1           50
港2    2010-9-16 00:00:00          1           50
港3    2010-9-16 00:00:00          1           50
港1    2010-9-16 00:10:00          1           50
港3    2010-9-16 00:10:00          1           50
港3    2010-9-16 00:20:00          1           50
港2    2010-9-16 00:20:00          1           50
..........
..........那丢失的数据为:港1    2010-9-16 00:20:00     
                港2    2010-9-16 00:10:00 
............     
 
........
数据是每隔10钟每一口井写道数据库中一次数据,
现在需要做的工作是,统计数据丢失数据的井号,要求是查询出不同的井号放在不同的虚拟表里面
或者不用虚拟表,直接能统计出每口井在某个时间段内丢失的数据情况,

解决方案 »

  1.   

    SQL2008里,先生成完整数据,再用EXCEPT 现在有的数据,省下的就是缺失的了
      

  2.   

    万一那个时间3个港都丢失的话,单纯用sql语句统计可能很难
    不如在程序里做处理还比较方便,或者用存储过程+游标遍历处理
      

  3.   


    我就是在程序里面处理的呀,不是在sql里面查询的,用的是visual studio 2005,在那里面应该怎么做呀?
      

  4.   

    用系统函数构造完整时间,与你所有的井号相连得到全部数据,再过滤实际存在即可
    假定你分析的开始时间是2010-9-16 00:00:00,结束时间为当前,参考代码:SELECT B.井号,T.时间
    FROM
    (select dateadd(MI,10*number,'2010-9-16 00:00:00') AS 时间,number from  master..spt_values where type='P') T 
     cross JOIN (select DISTINCT 井号 FROM TB) B
    WHERE T.时间<=GETDATE()  AND NOT EXISTS(SELECT * FROM TB WHERE TB.井号=B.井号 AND TB.日期=T.时间)