我写的程序是网络版的,在统计的时候速度很慢。SQLServer,我是用遍历数据表方法写的:
有三个表,表a是主表,表b是从表。表c是放统计结果的。
a.first
while not a.eof do
begin
     if a 满足统计条件 then
     begin 
          从表b里统计数据;
          把统计结果添加到表c中
     end;
     a.next;
end;运行的时候速度真受不了,这个方法有没有变快一点的方法,这个统计对我来说有点复杂,不会用SELECT来写。

解决方案 »

  1.   

    update maintable set countfiled=(select count(f1) from detailtable where detailtable.pid=maintable.id)
      

  2.   

    本期统计日期:2004-10-1 到 2004-10-31
    本月统计日期:2004-10-1 到 2004-10-31
    本季统计日期:2004-10-1 到 2004-12-31
    本年统计日期:2004-01-1 到 2004-12-31
    所有统计日期:1900-01-1 到 2099-12-31表owner: 
    xm     bh  htje  xsrq        tfrq
    张三   1   2600  2004-10-11              (本月付掉,不退,money在本期内)
    李四   2   2500  2004-09-01  2004-10-15  (上月付掉,本月退,htje要取负数)
    王五   3   2400  2004-09-10              (上月付掉,不退,不取htje)表money:
    fzbh  rq          kxmc      fs    je 
    1     2004-10-11  工资      现金  230
    1     2004-10-11  奖金      支票  60
    2     2004-09-01  工资      现金  250
    2     2004-09-01  福利      现金  230
    2     2004-10-02  工资      支票  -250
    2     2004-10-02  福利      现金  -50
    3     2004-10-02  工资      支票  250
    3     2004-10-02  福利      现金  150
     
    想要的结果:
    姓名 预定工资  工资 奖金 福利 | 现金 支票(现金、支票的付款方式只是对工资分类)
    ---------------------------------------------
    张三     2600   230   60         230  
    李四    -2500  -250       -50        -250
    王五            250       150         250 本期      100   230   60  100    230  
    本月      100   230   60  100    230
    本季     2600   480   60  330    480  100
    本年     5000   ???????????????