在一个企业里有很多项目经理,我想通过SQL把该企业的所有一级的项目经理的总和数取出来,只在前台DELPHI里实现,请问怎么去?
with datamodule1.ADOQuery1 do
      begin
        sql.Clear;
        sql.Add('select count(*) from sgqyxmjlmd where zzdj=''一级''')
也就是说中间的COUNT(*)的数据我怎么取出来?

解决方案 »

  1.   

    我不知道你的数据库中是不是有放这个值 的字段
    你可以定义一个变量如AA你就叫AA=ADOQuery1.Fields[0].asinteger
    然后你就可以把你的AA作为一个字段值存下数据库中
      

  2.   

    with datamodule1.ADOQuery1 do
          begin
            close;
            sql.text := 'select count(*) from sgqyxmjlmd where zzdj=''一级'''
            open;
            取出来数据 := ADOQuery1.Fields[0].asinteger;
          end;
      

  3.   

    如果你要再取二级,三级的放话,不如和一级一起来取呀
    用SELECT COUNT(*),ZZDJ FROM XGQYXMJLMD GROUP BY ZZDJ
      

  4.   

    什么啊,你就不会用会这样的Sql语句吗?
    'select count(*) as FCount from sgqyxmjlmd where zzdj=''一级''')然后,ADOQuery1.fieldbyname('Fcount').asinteger不就取出来了吗?
      

  5.   

    SELECT AAA=COUNT(字段1),BBB=COUNT(字段2)............. FROM table where 条件 GROUP BY 字段
      

  6.   

    select count(A) as a , count(B) as b , count(C) as c into newtable from yourtable不知这样可以吗?
      

  7.   

    1.ADOQuery1.Fields[0].asinteger
    2.select count(*) c from sgqyxmjlmd where zzdj=''一级''  
      ADOQuery1['c'] //直接取了
      

  8.   

    select count(*) as 新字段 from ...
      

  9.   

    俺也晚了。
    select count(*) as AA。。
    EDIT1.TEXT :=FLOATTOSTR(ADOQRY1.FIELDBYNAME('AA').ASVALUE);
      

  10.   

    如果你的记录里只有总共只有三个级别的话,就用
    SELECT COUNT(*) AS CT,ZZDJ FROM XGQYXMJLMD GROUP BY ZZDJ
    就可以了
    它查询出来的结果会是三条记录!!!
    你可以分别用AAA,BBB,CCC,三个变量来到这
    三个记录的CT的值就可以了!!!
    adoquery1.first;
    AAA:=ADOQUEYR1.FILEDBYNAME('CT').ASINTEGER;
    ADOQUERY1.NEXT;
    BBB:=ADOQUEYR1.FILEDBYNAME('CT').ASINTEGER;
    ADOQUERY1.NEXT;
    CCC:=:=ADOQUEYR1.FILEDBYNAME('CT').ASINTEGER;
      

  11.   

    with adoquery do
    begin
      close;
      sql.clear;
       sql.text:='select count(*) as ct,zzdj from XGQYXMJLMD' 
                 +' where zzdj='+#39+'一级'+#39
                 +'union select count(*) as ct ,zzdj from XGQYXMJLMD' 
                 +' where zzdj='+#39+'二级'+#39
                  +'union select count(*) as ct ,zzdj from XGQYXMJLMD' 
                  +' where zzdj='+#39+'三级'+#39;
       open;
    end;
    它查询出来的结果会是三条记录!!!
    你可以分别用AAA,BBB,CCC,三个变量来到这
    三个记录的CT的值就可以了!!!
    adoquery1.first;
    AAA:=ADOQUEYR1.FILEDBYNAME('CT').ASINTEGER;
    ADOQUERY1.NEXT;
    BBB:=ADOQUEYR1.FILEDBYNAME('CT').ASINTEGER;
    ADOQUERY1.NEXT;
    CCC:=:=ADOQUEYR1.FILEDBYNAME('CT').ASINTEGER;
      

  12.   

    Var Str:String ;//级别
    I:Integer ;
    with datamodule1.ADOQuery1 do
          begin
            sql.Clear;
            sql.Add('select count(*) from sgqyxmjlmd where zzdj='''+Str+'''');
            Open ;
            I:=Fields[0].AsInteger ;
          End ;
    End ;
    在你不知道要取哪个级别或哪几级的数量时你只有一次次的调用这段代码了