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