2017-12-18 18 views
0

오라클에 월 및 연도별로 날짜를 그룹화하는 쿼리를 작성하려고합니다. 게다가 달은 월 번호가 아닌 이름이 표시되어야합니다. 내가 현재 가지고오라클 그룹 월별, 연도 별, 연도 별, 주문 별

쿼리는 다음과 같습니다

SELECT to_char(datumgeleend, 'MONTH') as "Maand geleend", 
to_char(datumgeleend, 'YYYY') as "Jaar geleend", SUM(bedrag) 
FROM lening 
GROUP BY to_char(datumgeleend, 'MONTH'), to_char(datumgeleend, 'YYYY') 
ORDER BY to_char(datumgeleend, 'YYYY'), to_char(datumgeleend, 'MONTH') DESC; 

문제가 있음을 해당 월의 첫 번째 문자가 아니라 달의 수에 작품으로 순서. 인수 분해 WITH 절을 사용하여,

ORA-00979: not a GROUP BY expression 

답변

1

그냥 GROUP BY 절에 extract(month from datumgeleend)을 추가

SELECT to_char(datumgeleend, 'MONTH') as "Maand geleend", 
to_char(datumgeleend, 'YYYY') as "Jaar geleend", SUM(bedrag) 
FROM lening 
GROUP BY to_char(datumgeleend, 'MONTH'), to_char(datumgeleend, 'YYYY'), extract(month from datumgeleend) 
ORDER BY to_char(datumgeleend, 'YYYY'), extract(month from datumgeleend) DESC; 
+0

아, 그 일을 완벽하게 수행합니다! 나는 GROUP BY에 넣어야 만한다는 것을 깨닫지 못했습니다. 결국 나는 그것을 올바르게 정렬하기 위해 DESC를 없애야 만했다. 그러나 그것은 질문과는 아무 상관이 없다. 대답 해 주셔서 감사합니다! –

0

간단한 해결 방법 :

SELECT to_char(datumgeleend, 'MONTH') as "Maand geleend", 
to_char(datumgeleend, 'YYYY') as "Jaar geleend", SUM(bedrag) 
FROM lening 
GROUP BY to_char(datumgeleend, 'MONTH'), to_char(datumgeleend, 'YYYY') 
ORDER BY to_char(datumgeleend, 'YYYY'), extract(month from datumgeleend) 
DESC; 

슬프게도이 쿼리는 다음과 같은 오류가 발생

그래서 나는 약간 쿼리를 조정 거라고 해결하기 위해 생각 , 원하는대로 데이터를 정렬하는 데 사용되는 추가 열 (GROUP BY 절에 포함되어야 함) :

WITH temp AS (
    SELECT 
    TO_CHAR(datumgeleend,'MONTH') AS maand_geleend, 
    TO_CHAR(datumgeleend,'YYYY') AS jaar_geleend, 
    SUM(bedrag) sum_bedrag, 
    -- 
    TO_CHAR(datumgeleend,'yyyymm') yyyymm 
    FROM 
    lening 
    GROUP BY 
    TO_CHAR(datumgeleend,'MONTH'), 
    TO_CHAR(datumgeleend,'YYYY'), 
    TO_CHAR(datumgeleend,'yyyymm') 
) SELECT 
    maand_geleend, 
    jaar_geleend, 
    sum_bedrag 
    FROM 
    temp 
ORDER BY 
    yyyymm DESC; 
+0

우 덕분에 해결을 위해, 좋은 그것이 가능하다는 것을 알고 : D 내가 대답으로보다 쉽게 ​​만들 것을 선택했다, 그래서 다른 솔루션은 비록 간단했다 유사한 문제를 가진 다른 사람들! 답변 해 주셔서 감사합니다. –