ADOQuery1.SQL.ADD(' select UsersList.User_UID, UsersList.User_Name, count(StudysList.Study_key) as StudyNum from UsersList,StudysList '
                   +' where  StudysList.User_UID = UsersList.User_UID '
                   +' group by UsersList.User_UID,UsersList.User_Name ' ) ;
想实现的功能是: 当 count(StudysList.Study_key)  也就是 StudyNum 的值 小于 20 时直接显示,大于20就显示20.小弟是新手,大略设想了下2个方向:
1、用SQl语句直接条件限制来实现  2、判断操作 DBgrid 显示的值
可是不知道具体该如何实现。。

解决方案 »

  1.   

    你用CASE试试 ,我没有试过 
      

  2.   

    select UsersList.User_UID, UsersList.User_Name, case when count(StudysList.Study_key)<20 then count(StudysList.Study_key) else 20 end as StudyNum from UsersList,StudysList
    where  StudysList.User_UID = UsersList.User_UID
    group by UsersList.User_UID,UsersList.User_Name
      

  3.   


    提示未指定的错误。。ADOQuery1.SQL.Add('select UsersList.User_UID, UsersList.User_Name,'
               +'  case when count(StudysList.Study_key)<20 then count(StudysList.Study_key) else 20 end as StudyNum '
               +'  from UsersList,StudysList where  StudysList.User_UID = UsersList.User_UID group by UsersList.User_UID,UsersList.User_Name  ');
         ADOQuery1.Open;
      

  4.   

    从语句上看不出错误!你把USER_Name 换成[USER_Name]试试
      

  5.   

    如果是access数据库的话将
    case when count(StudysList.Study_key) <20 then count(StudysList.Study_key) else 20 end as StudyNum
    替换成
    iif(count(StudysList.Study_key)<20 ,count(StudysList.Study_key) ,20) as StudyNum
      

  6.   


    是 access 数据库,多谢月亮兄~
    小弟冒昧的再问一句。。
    假如 动态的设置 num = 20,那查询语句该怎么改? @num ?
      

  7.   

    var
     num: Integer;
    begin
     num:=20;
    ADOQuery1.SQL.ADD(' select UsersList.User_UID, UsersList.User_Name, iif(count(StudysList.Study_key) <'+inttostr(num)+' ,count(StudysList.Study_key) ,'+inttostr(num)+') as StudyNum  from UsersList,StudysList '
                       +' where  StudysList.User_UID = UsersList.User_UID '
                       +' group by UsersList.User_UID,UsersList.User_Name ' ) ;
    end;
      

  8.   

    非常感谢月亮大大以及 duck04551、骑牛上北京 两位大哥~