无法获得Sum作为其申请分组依据

时间:2019-05-21 06:41:21

标签: sql oracle

我正在尝试放置案例声明,但出现错误,要求我使用分组依据。

select  (CASE 
--WHEN  sum( GREATEST ( '0', t1.LIFT_TEAM_A )+ GREATEST ( '0', t1.LIFT_TEAM_B ))<'1'  OR le.LIFT_EXCLUDE = '1' THEN 'BAU'
when  t1.LIFT_TEAM_A = '1' AND to_char( ln.min_date_of_effect, 'yyyy-mm-dd')>= '2015-01-15' THEN 'Express' 
 WHEN t1.LIFT_TEAM_B = '1' AND to_char( ln.min_date_of_effect, 'yyyy-mm-dd')>= '2015-01-15' THEN 'Standard'
 else 'other' 
 end ) LIFT_TEAM
 FROM LIFT_DEALS T1
left join 
LENDNET.OLS_VW_APP_SUBMITTED_DATE ln
  on t1.case_id=ln.application_id
  LEFT JOIN 
  lift_exclude LE
  ON LE.CASE_ID=T1.CASE_ID

代码可以正常工作,但是如果我想取消对第一个sum语句的注释,那么我会得到错误提示,

  

不是单组分组功能

1 个答案:

答案 0 :(得分:0)

它真的必须是一个SUM函数吗?

这就是您现在拥有的:

WHEN    SUM (
                        GREATEST ('0', t1.LIFT_TEAM_A)
                      + GREATEST ('0', t1.LIFT_TEAM_B)) < '1'
                OR le.LIFT_EXCLUDE = '1'
           THEN
              'BAU'

难道不是简单的

WHEN      GREATEST ('0', t1.LIFT_TEAM_A)
                   + GREATEST ('0', t1.LIFT_TEAM_B) < '1'
                OR le.LIFT_EXCLUDE = '1'
           THEN
              'BAU'

如果是这样,那么您也不需要GROUP BY子句。

顺便说一下,为什么将这个结果与 string < '1')进行比较? < 1不是数字吗?