一个简单的SQL查询语句,但是……请各位大虾帮帮俺,谢谢。俺想统计一下结算(js)表里结算日期(jsrq)为2007年度,累计现金支付(xjzf)大于30000的人员情况,写的语句如下:
select * from js where sum(js.xjzf)>=30000 and to_char(js.jsrq,'yyyy')='2007';可是提示错误如下:
ORA-00934: 此处不允许使用分组函数请教各位大虾应该如何实现这个统计功能呢?这个SQL语句到底应该如何写呢?谢谢!在线盼答

解决方案 »

  1.   

    假设结算表中有一个字段是“人员”
    select   人员   from   js   
    where   sum(js.xjzf)> =30000   
    and   to_char(js.jsrq,'yyyy')='2007'
    group by 人员; 人员的详细情况应该在其它表中。
      

  2.   


    --首先同过条件找用户IDselect 用户ID,SUM(xjzf)   from   js   
    where  to_char(js.jsrq,'yyyy')='2007'
    GROUP BY 用户ID
    HAVING SUM(xjzf)>=30000--如果根据用户ID 还有对应的用户信息表(USERINFO)那么如下
    SELECT * FROM USERINFO WHERE
    EXISTS (
      SELECT * FROM (
        select 用户ID,SUM(xjzf)   from   js   
        where  to_char(js.jsrq,'yyyy')='2007'
        GROUP BY 用户ID
        HAVING SUM(xjzf)>=30000
      ) B WHERE USERINFO.用户ID = B.用户ID
    )