在select 中出现的字段名要么在group by 子句中,要么出现在聚合函数中。
having是聚合函数的条件判断语句,但却没有出现条件判断符。我想你完全可以这样写:
select bh,bt,zw,fj,clr,clrdw,clsj,clbj,clyj,czbj,scbj,clsx 
from BG_QSCL 
where scbj='0'  and clsx=(select max(clsx) from BG_QSCL)
order by clsj desc;

解决方案 »

  1.   

    改进楼上的一点select bh,bt,zw,fj,clr,clrdw,clsj,clbj,clyj,czbj,scbj,clsx 
    from BG_QSCL 
    where scbj='0'  and clsx=(select max(clsx) from BG_QSCL)
    order by clsj,BH desc;
      

  2.   

    select 
        bh,
        bt,
        zw,
        fj,
        clr,
        clrdw,
        clsj,
        clbj,
        clyj,
        czbj,
        scbj,
        max(clsx) 
    from 
        BG_QSCL 
    where 
        scbj='0' 
    GROUP by  
        bh,
        bt,
        zw,
        fj,
        clr,
        clrdw,
        clsj,
        clbj,
        clyj,
        czbj,
        scbj
    having MAX(clsx) >100
    order by 
        clsj desc;
      

  3.   

    楼上的做法是正确的:
    使用group by的时候,在select 语句中出现的字段,必须是在group by后面出现的字段或者是聚组函数。
    例:select a,b,sum(c)
    from table
    where a > 0
    group by a,b
    其中c处在聚组函数中,这样是正确的。
      

  4.   

    那就是这样的:select bh,bt,zw,fj,clr,clrdw,clsj,clbj,clyj,czbj,scbj,clsx 
    from BG_QSCL 
    where scbj='0'  and clsx=(select max(clsx) from BG_QSCL group by bh)
    order by clsj desc;
      

  5.   

    不好意思,上句错了:
    select bh,bt,zw,fj,clr,clrdw,clsj,clbj,clyj,czbj,scbj,clsx 
    from BG_QSCL 
    where scbj='0'  and clsx in (select max(clsx) from BG_QSCL group by bh)
    order by clsj desc;