很抱歉哈,我先描述一下我的问题,有些复杂。
我有一个表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),请问该语句应如何写?可能没描述清楚,请大家提示一下。问题解决立即结贴给分。
我有一个表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),请问该语句应如何写?可能没描述清楚,请大家提示一下。问题解决立即结贴给分。
是的
用exists判断一下,90条不多
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)
---------------------------------------------------------------------- -
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 行)
--不是很繁杂啊,
--先把机器代码保存在一个表中(算是标准表)
--每天用系统用的表与标准表关连一下就行了
insert into tb
select getdate(),0,kind from tb_备份表 a left join tb b on a.kin=b.kind where b.kind is null
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))