这是答案 还是... 我想应该用left outer join .. on  ......
哈  但是我不会用

解决方案 »

  1.   

    那就没办法了,用SQLSERVER2000快
      

  2.   

    INSERT INTO [D:\保险收费\sybx.mdb].[报表打印] 
    SELECT '2002' AS 年度,
        (select 余额 
                from 缴纳余额 
                where  年度='2002' and  缴纳余额.微机编码=单位信息表.微机编码) 
    as 缴纳余额,    (select sum(实际缴纳金额) 
                from 收缴日志 
                where 年度='2002' and 收缴日志.微机编码=单位信息表.微机编码 
                group by 收缴日志.微机编码
    as 本年实收from [D:\失业保险收费系统\sybx.mdb].[单位信息表]   
    where 停止缴纳>-1 or (停止缴纳 = -1  and year(停止缴纳时间)= '2002')再update 报表打印 isnull=0 效率要高得多
      

  3.   

    当然 事实上我已经取消了iif 但是速度仍然是非常非常慢 。 (这只是其中的1/24的统计代码 共12个月 两种情况 所以 我很担心一年下来用户要用半年来处理数据,还不能死机)
      

  4.   

    可以去这里问问,有很多SQL高手www.itpub.net
      

  5.   

    我改动了一部分,根据单位微机编码 使用循环 逐个insert纪录,速度仍然很慢 
    原来打算先用insert 插入单位基本信息 其他部分内容用update 方法。
    但是update在access中 并不支持 from 项 所以 类似于sum()之类的统计值 不能被update到先前用insert创建的数据库中?我该怎么办 昨天晚上 当新年钟声敲响的时候 我就一直在焦急地等待....现在我仍然很焦急
      

  6.   

    建立了索引 仍然很慢 使用sql2000 成本不允许?555555555
      

  7.   

    子查询太多,是原因之一另外,数据库是jet/sql/ra?合理利用临时表/视图/索引,特别是索引
      

  8.   

    数据库是access 2000
    数据驱动 jet 4.0
    请大家关注
      

  9.   

    你可以先建立视图(或临时表)(select 余额 from 缴纳余额where  年度='2002' and  缴纳余额.微机编码=单位信息表.微机编码) 和视图select sum(实际缴纳金额)from=收缴日志where 年度='2002' and 收缴日志.微机编码=单位信息表.微机编码  group by 收缴日志.微机编码,然后再进行主查询操作,从理论上判断,你的语句需要执行5000^2级别的循环,如果你用以上方法的话,理论上你的语句需要执行5*5000词循环,比原来少一个数量级,应该会快很多。
      

  10.   

    不是所有的事情都要用一条SQL解决问题,虽然这样显得专业一些,你可以适当的建一些视图或临时表再加上一些程序来解决,我想这样的执行效率高很多,你试一试。