很抱歉哈,我先描述一下我的问题,有些复杂。
    我有一个表tb,日期字段dt,float字段ep,int字段Kid,该表用来存很多不同设备的一个重要参数,Kid字段就是用来分辨不同设备的字段,比如Kid=4,Kid=9,Kid=35代表三个不同的设备。由应用软件来给数据库传数据,每存一条记录,都将该记录的时间,ep,和相应的Kid存进去。
    现在有一个问题是,由于数据量大,可能有时候会丢数据,这是应用软件的问题。但是我需要保证每天7:30时的每个设备在数据库中都有数据,所以我需要写一个job实现以下功能:每天7:30以后查询一下每个Kid是否在7:30有相应的数据,没有的话,就为该Kid插入一条记录:dt=getdate()+7:30,ep=0,Kid。
    假设Kid有以下值:4,6,7,13,36,68,101,36,27,87,98,99,39(实际表中有90个Kid),请问该语句应如何写?可能没描述清楚,请大家提示一下。问题解决立即结贴给分。

解决方案 »

  1.   


    是的
    用exists判断一下,90条不多
      

  2.   


    insert tb
    select CONVERT(char(10),getdate(),120)+' 7:30:00',0,kid   from KID表 a 
    where not exists (select 1 from tb b where a.kid=b.kid)
      

  3.   

    insert into tc select * from tb t where not exists(select 1 from ta where Kid=t.Kid)
      

  4.   

    Rdt                                  kc_ep                           Kid    
    ---------------------------------------------------------------------- -
    2010-02-13 07:30:00.000             223412.0                         39
    2010-02-14 07:30:00.000             225777.0                         39
    2010-02-13 07:30:00.000             70302.109375                     42
    2010-02-14 07:30:00.000             72260.625                        42
    2010-02-13 07:30:00.000             106257.0                         40
    2010-02-14 07:30:00.000             107842.0                         40
    2010-02-13 07:30:00.000             14560.255859375                  41
    2010-02-14 07:30:00.000             14923.0791015625                 41
    2010-02-13 07:30:00.000             54332.5546875                    43
    2010-02-14 07:30:00.000             55533.5234375                    43
    2010-02-13 07:30:00.000             46.976860046386719               121
    2010-02-14 07:30:00.000             46.976860046386719               121
    2010-02-13 07:30:00.000             64590.8984375                    44
    2010-02-14 07:30:00.000             65565.296875                     44
    2010-02-13 07:30:00.000             32101.787109375                  46
    2010-02-14 07:30:00.000             32812.22265625                   46
    2010-02-13 07:30:00.000             318.5872802734375                49
    2010-02-14 07:30:00.000             318.22451782226562               49
    2010-02-13 07:30:00.000             21508.55859375                   50
    2010-02-14 07:30:00.000             21517.2265625                    50
    2010-02-13 07:30:00.000             116096.0                         45
    2010-02-14 07:30:00.000             116668.0                         45
    2010-02-13 07:30:00.000             16527.59375                      47
    2010-02-14 07:30:00.000             16885.32421875                   47
    2010-02-13 07:30:00.000             15695.6357421875                 48
    2010-02-14 07:30:00.000             15697.3076171875                 48
    2010-02-13 07:30:00.000             48.91925048828125                51
    2010-02-14 07:30:00.000             48.91925048828125                51
    2010-02-13 07:30:00.000             397427.0                         52
    2010-02-14 07:30:00.000             400656.0                         52
    2010-02-13 07:30:00.000             46656.90625                      54
    2010-02-14 07:30:00.000             48053.06640625                   54
    2010-02-13 07:30:00.000             50927.74609375                   55
    2010-02-14 07:30:00.000             51227.84765625                   55
    2010-02-13 07:30:00.000             39181.90234375                   58
    2010-02-14 07:30:00.000             39329.97265625                   58
    2010-02-13 07:30:00.000             16405.84765625                   57
    2010-02-14 07:30:00.000             16518.66015625                   57
    2010-02-13 07:30:00.000             426713.0                         53
    2010-02-14 07:30:00.000             428522.0                         53
    2010-02-13 (所影响的行数为 168 行)
      

  5.   


    --不是很繁杂啊,
    --先把机器代码保存在一个表中(算是标准表)
    --每天用系统用的表与标准表关连一下就行了
    insert into tb 
    select getdate(),0,kind from tb_备份表 a left join tb b on a.kin=b.kind where b.kind is null
      

  6.   

    我确实建了一个设备代码表,该表中存了所有的设备代码Kid。但是得先检查每一个Kid在tb表中有没有7:30的数据,没有的话,才为该Kid插入一条7:30的记录。插入记录的是这样的:dt=CONVERT(char(10),getdate(),120)+' 7:30:00',ep=0,及相应的Kid。
      

  7.   

    大侠,你这个句子最后括号中是否少了一个时间判断啊?我改了一下:insert kc_ep
    select CONVERT(char(10),getdate(),120)+' 7:30:00',0,Kid 
    from tb_order a 
    where not exists (select 1 from kc_ep b where a.Kid=b.Kid and b.Rdt=convert(datetime,CONVERT(char(10),getdate(),120)+' 7:30:00',120))