有没有大佬知道是什么问题 报错ora00937不是单组分组函数select
tt.cc,
sum(case when tt.name='安全' then sum(tt.userid) else 0 end) 
 from 
 (select t.*,c.name,d.name cc
 from t_login_answer_log t 
 left join pf_org_user u on t.userid=u.id 
 left join pf_org_department d on d.id=u.dept_id
 left join t_login_lib lib on t.libid=lib.id
 left join t_login_category c on lib.category=c.id) tt
 
 group by tt.cc

解决方案 »

  1.   

    sun(tt.userid)去掉sum
      

  2.   

    不行。userid是varchar类型的,需要一个num类型,需求是需要通过userid的数量查到人数
      

  3.   

    那你把这个替换成1不就行了,干嘛要用userid
      

  4.   


    select
    v.cc,sum(bb)
    from
    (select
    tt.cc,
    case when tt.name='安全' then sum(tt.userid) else 0 end bb
     from 
     (select t.*,c.name,d.name cc
     from t_login_answer_log t 
     left join pf_org_user u on t.userid=u.id 
     left join pf_org_department d on d.id=u.dept_id
     left join t_login_lib lib on t.libid=lib.id
     left join t_login_category c on lib.category=c.id) tt
     
     group by tt.cc
    )v你這樣試一下
      

  5.   

    sum(case when tt.name='安全' then sum(tt.userid) else 0 end) 
    sum(tt.userid) ,这是要做什么呢?
      

  6.   

    不行,这样就报不是group by表达式了
      

  7.   

    那你把这个替换成1不就行了,干嘛要用userid
    因为需要得到userid的数量
      

  8.   

    得到userid的数量
      

  9.   

    sum(userid),得不到你的预期结果。贴表结构、测试数据、预期结果吧.PS:不要贴图,要文本内容。
      

  10.   

    那你把这个替换成1不就行了,干嘛要用userid
    因为需要得到userid的数量
    那你这里把第一个sun改成count第二个去掉,然后else后面的0改成null
      

  11.   

    那你把这个替换成1不就行了,干嘛要用userid
    因为需要得到userid的数量
    那你这里把第一个sun改成count第二个去掉,然后else后面的0改成null
    nb呀,大佬万分感谢
      

  12.   

    sum(userid) 的位置 直接改为 1