datasource2.DataSet:=Query1;
  DBGrid1.DataSource:=datasource2;
  with Query1 do
  begin
    close;
    sql.Clear;
    sql.Add('select * from FYtable where 欠收金额 in (select MIN(欠收金额)  from FYtable 
             group by 客户编号)');
    Open;
  end;
====================================================
为什么DBGRID1显示的不是符合条件的数据:应该显示的是每个客户编号对应的最小欠收金额,但是现在显示的确实所有的数据;换成MAX(欠收金额)可以显示正确的数据,即每个客户编号对应的最大欠收金额,不知道为什么?

解决方案 »

  1.   

    select MIN(欠收金额)  from FYtable 
                 group by 客户编号把这一句单独执行,看看是什么结果。看看你的表结构。
      

  2.   

    SELECT *
    FROM test5
    WHERE ((khbh + STR(qje)) IN
              (SELECT khbh + STR(MIN(qje)) AS Expr1
             FROM test5
             GROUP BY khbh))qje=欠收金额,khbh=客户编号
      

  3.   

    你可试一下,如果把id=1的欠收金额改成500,查询max就也不正确了
      

  4.   

    TO:erhan(二憨),非常感谢,试了下,结果正确分数太少,不好意思,3Q!