当前位置: 代码迷 >> Informix >> 求:update 话语(每天执行一次的sql)
  详细解决方案

求:update 话语(每天执行一次的sql)

热度:216   发布时间:2016-05-05 08:54:27.0
求:update 语句(每天执行一次的sql)
表的结构 
-------------------------------------------- 
DROP table  test100; 
CREATE TABLE test100 
    ( 
date date, 
bh varchar(10),--编号 
bqye decimal(16,2),--本期余额 
sqye decimal(16,2)--上期余额 

    ); 
-------------------------------------- 
数据 
date            bh          bqye        sqye 
2009-12-17      10001      12.00        0 
2009-12-17      10002      100.00        0 
2009-12-17      10003      500.00        0 
2009-12-17      10004      200.00        0 
2009-12-17      10005      200.00        0 
2009-12-17      10006      400.00        0 
    。。。                。。。                    
2009-12-18      10001        XXX        12.00                      
2009-12-18      10002        XXX        100.00                    
2009-12-18      10003        XXX        500.00                    
2009-12-18      10004        XXX        200.00                    
2009-12-18      10005        XXX        200.00                    
2009-12-18      10006        XXX        400.00                    

问 
每天数据为8k多行数据 
把2009-12-17的bqye(本期余额)更新到 2009-12-18上期余额上面 
date 时间是用程序控制的,sql可以把时间date写死,
球每天执行一次的sql
还有补充,我的是informix数据库,
------解决方案--------------------
update test100 t
set sqye=(select bqye from test100 where date=2009-12-17 and bh=t.bh  )
where date=2009-12-18
------解决方案--------------------
什么表啊,把dba气死
------解决方案--------------------
up
------解决方案--------------------
疑问,你把前17号的数据更新到18号上,那么17号的数据保留还是删除?
统计bqye
1.select bh,sum(bqye) as bqye test100 where date in('','') group by 1
更新
2.update test100 b set bh (select sum(a.bqye) as bqye test100 a where a.date in('',''))   where date = '' and a.bh = b.bh
估计第2个语句不行,我觉得1条语句不好写可以写多条,我觉得是否可以采用临时表来解决。
  相关解决方案