select a.*,p.qjje,p.qjcs,p.qjgf,p.qjlf
from k_view a
left outer join (select khdm,sum(xse) as qjje,sum(gf) as qjgf,sum(lf) as qjlf,count(ro_no) as qjcs
from ro  where wxjd='已结' and jd_date>='2008-07-07' AND jd_date<='2009-09-09' group by khdm) p on a.khdm=p.khdm
where P.QJJE>0 ORDER BY P.QJJE在sql查询分析器中数据正确,显示5000条记录
在cxgrid中,数据也正确,但还是现实7800条记录,谁知道为什么

解决方案 »

  1.   

    cxgrid是如何与数据查询关联的,
    select count(*)
    from k_view a 
    left outer join (select khdm,sum(xse) as qjje,sum(gf) as qjgf,sum(lf) as qjlf,count(ro_no) as qjcs 
    from ro  where wxjd='已结' and jd_date>='2008-07-07' AND jd_date <='2009-09-09' group by khdm) p on a.khdm=p.khdm 
    where P.QJJE>0 ORDER BY P.QJJE 查出来的确是5000条吗?
      

  2.   

    确定你连接的是不是同一个库
    另外在代码里判断下你那个数据集查出来是多少条,不是CSGIRD里显示的
      

  3.   

    把上面的语句写成一个view.在程式里,select * from theview. 看看还是不是这样?
      

  4.   

    是的,那个sql语句是我adoquery里边的查询,在查询分析器显示的5000条是对的,在cxgrid中好像where P.QJJE>0 ORDER BY P.QJJE 不起作用一样,不设置这个条件是,qjje显示的是0,设置为条件时显示为空
    大家帮忙啊
      

  5.   

    To dinoalex:
    没法弄成view,因为那个时间段是要根据用户选择变化的
      

  6.   

    估计是SQL语句的问题,跟踪看一下就知道了!
      

  7.   

    TO  sanguomi:
    用RecordCount跟踪出来是7000,下边怎么弄???
      

  8.   

    为什么在sql查询分析器里是5000,在程序里同样的sql语句出来是7000???
     S:='select a.*,p.qjje,p.qjcs,p.qjgf,p.qjlf from k_view a '
          +'left outer join (select khdm,sum(xse) as qjje,sum(gf) as qjgf,'
          +'sum(lf) as qjlf,count(ro_no) as qjcs from ro  where wxjd=''已结'''
          +' and jd_date>='''+cxDateEdit1.Text+''''
          +' AND jd_date<='''+cxDateEdit2.Text+''''
          +' group by khdm) p on a.khdm=p.khdm AND P.QJJE>0 AND P.QJCS>0';
    DataModule1.qry2.Active:=FALSE;
       DataModule1.qry2.SQL.Clear;
       DataModule1.qry2.SQL.Add(S);
       DataModule1.qry2.Active := true;
    showmessage(inttostr(datamodule1.qry2.RecordCount));
    谁帮看看那里错了???
      

  9.   

    低级错误找到了:  +' group by khdm) p on a.khdm=p.khdm AND P.QJJE>0 AND P.QJCS>0'; 
    应该是where结贴给分