2017-02-03 3 views
1

다음 쿼리에서 ORA-00979 오류 메시지가 나타납니다. Stack Overflow에서이 오류에 대한 많은 토론을 읽었으며 여전히 해결책을 찾을 수 없다는 내용으로이 서문을 시작해야합니다. 또한 오류가 CASE 문에서 오는 것으로 확신합니다. 왜냐하면 명령문을 완전히 제거했을 때 쿼리에서 결과를 얻었고 'SUM (Z.EQUITY_FOUR)'을 제외한 CASE 문을 모두 제거했을 때 결과를 얻었 기 때문입니다. (즉, EQUITY_FOUR이 가져 오는 데이터베이스에 문제가 없다고 확신합니다). 내 연구를하면서 GROUP BY 절에 CASE 문에 관한ORA-00979 : GROUP BY가 아님 (Case 문 문제)

SELECT 
EXTRACT(YEAR FROM HDS.MORTGAGE_START_DATE) as Yr, 
EXTRACT(MONTH FROM HDS.MORTGAGE_START_DATE) as Mth, 
Q.CITY as City, 
CASE WHEN pp.ISACTIVE = 'NO' 
AND EXTRACT(YEAR FROM HDS.CANCELLATION_DATE) = EXTRACT(YEAR FROM HDS.MORTGAGE_START_DATE) 
AND EXTRACT(MONTH FROM HDS.CANCELLATION_DATE) = EXTRACT(MONTH FROM HDS.MORTGAGE_START_DATE) 
THEN SUM(Z.EQUITY_FOUR) 
END as Cancelled 

(From Statement) 

(Where Statement) 

GROUP BY EXTRACT(YEAR FROM HDS.MORTGAGE_START_DATE), 
    EXTRACT(MONTH FROM HDS.MORTGAGE_START_DATE), 
    Q.CITY, 
    CASE 
    WHEN pp.ISACTIVE = 'NO' 
    AND EXTRACT(YEAR FROM HDS.CANCELLATION_DATE) = EXTRACT(YEAR FROM HDS.MORTGAGE_START_DATE) 
    AND EXTRACT(MONTH FROM HDS.CANCELLATION_DATE) = EXTRACT(MONTH FROM HDS.MORTGAGE_START_DATE) 
    THEN SUM(Z.EQUITY_FOUR) 
    END 

, 나는 GROUP BY 표현식에 대한 전체 CASE 문을 추가 진술이 응답이 포함이 (ORA-00979: not a GROUP BY expression issue) 글을 읽고있는의 저자 그의 주장에 대한 게시물 클레임. 그러나 여전히 위의 오류가 나타납니다.

도움 주셔서 감사합니다.

답변

1

나는 당신이 SUM() 내부의 CASE을 원한다고 생각 : 당신은 너무 많이, 고든

SELECT EXTRACT(YEAR FROM HDS.MORTGAGE_START_DATE) as Yr, 
     EXTRACT(MONTH FROM HDS.MORTGAGE_START_DATE) as Mth, 
     Q.CITY as City, 
     SUM(CASE WHEN pp.ISACTIVE = 'NO' AND 
        EXTRACT(YEAR FROM HDS.CANCELLATION_DATE) = EXTRACT(YEAR FROM HDS.MORTGAGE_START_DATE) AND 
        EXTRACT(MONTH FROM HDS.CANCELLATION_DATE) = EXTRACT(MONTH FROM HDS.MORTGAGE_START_DATE) 
       THEN Z.EQUITY_FOUR 
      END) as Cancelled 
(From Statement) 
(Where Statement) 
GROUP BY EXTRACT(YEAR FROM HDS.MORTGAGE_START_DATE), 
     EXTRACT(MONTH FROM HDS.MORTGAGE_START_DATE), 
     Q.CITY; 
+0

- 그 일을! –