1.select RS.dwbm,count(*) rs, sum(GZ.YFX) YFX,sum(GZ.B013) B013,sum(GZ.B015) B015,
2.sum(GZ.B014) B014,B003,sum(GZ.KFX) KFX,sum(GZ.SFX) SFX into tmpDkjTjxx 
3.from tmpWxRscx rs,tbldwxx dw,tmpWxGzcx gz 
4.where rs.rybm=gz.rybm and gz.rq=rs.rq  and gz.rq between '2005-12' and '2005-12' and 5.dw.dwbm=rs.dwbm and rs.dwbm=gz.dwbm and rs.czbj like '00_0%' and 
6.RS.DWBM= '001001' or RS.DWBM= '001002' or RS.DWBM= '001003'  
7.and dw.dwmc in (select distinct dwmc from dwqx where jsmc='sa') and dw.TFBZ='0' and 8.gz.gzxz='0'  
9.group by  RS.dwbm order by  RS.dwbm请看第 6行条件代码,or放在这里是否合适,潜在危险是什么?
这是我从储存过程中拿出来的 第6行的代码 是一个变量带入的条件,每次到这里都会出问题,可是我又看不出来到底出了什么问题,帮帮忙啊~~~~~

解决方案 »

  1.   

    第6行没问题,可能第5行有问题:
    rs.czbj like '00_0%'--这个表示以00开头且第4个字符是0的记录(_是通配符)
    rs.czbj like '00[_]0%'--这个才表示以00_0开头的记录
      

  2.   

    sql语句中计算顺序是先计算and后计算or,所以你这种写法会先处理rs.rybm=gz.rybm and gz.rq=rs.rq  and gz.rq between '2005-12' and '2005-12' and 5.dw.dwbm=rs.dwbm and rs.dwbm=gz.dwbm and rs.czbj like '00_0%' and 
    6.RS.DWBM= '001001' ,后处理RS.DWBM= '001003'  
    7.and dw.dwmc in (select distinct dwmc from dwqx where jsmc='sa') and dw.TFBZ='0' and 8.gz.gzxz='0'  ,然后再与条件or RS.DWBM= '001002' or 进行or运算,楼主是希望RS.DWBM= '001001' or RS.DWBM= '001002' or RS.DWBM= '001003'  作为一个条件去运算吧,所以这个条件要加上括号,即第6行要加上括号