rollup 관련해서 sort 관련 질문있습니다 ㅠ 0 2 1,649

by 열정가이 [SQL Query] rollup sort [2018.12.20 11:41:16]


캡처.PNG (80,641Bytes)

SELECT
DECODE(grouping_id(DNIS, timestamp, CODE),1,'SUB-SUM',7,'TOT-SUM',DNIS) AS DNIS,
DECODE(grouping_id(DNIS, timestamp, CODE),1,'SUB-SUM',7,'TOT-SUM',TIMESTAMP) AS TIMESTAMP,
DECODE(grouping_id(DNIS, timestamp, CODE),1,'SUB-SUM',7,'TOT-SUM',CODE) AS CODE,
SUM(OFFER) AS OFFER
FROM (
SELECT   
(SELECT DNISNAME FROM U_IVRDNISINFO WHERE DNIS = U.DNIS) AS DNIS,
CASE STEP WHEN 1 THEN U.SERVICECODENAME
    WHEN 2 THEN ' ' || U.SERVICECODENAME
    WHEN 3 THEN ' ' || U.SERVICECODENAME
    WHEN 4 THEN ' ;' || U.SERVICECODENAME
    WHEN 5 THEN ' ' || U.SERVICECODENAME
END AS CODE,                                                
YMD AS TIMESTAMP,                                      
COUNT AS OFFER,
U.SORT AS SORT
FROM H_IVRSVC_D H, U_IVRSERVICECODEINFO U     
WHERE (YMD >= '20180901' AND YMD <= '20180930')                                           
)
GROUP BY ROLLUP((DNIS, timestamp), CODE);

다음과 같은 쿼리가 존재합니다...!!

근데 여기서 지금 이대로에서 ORDER BY를 하고 싶은데

ORDER BY DNIS, TIMESTAMP, SORT 순으로 하고 싶습니다...

그래서 GROUP BY 밑에 ORDER BY DNIS,TIMESTAMP,(SUM(SORT)/COUNT(SORT)) 이런방식으로 하려고 하자니

소계와 합계가 맨 위로 올라갑니다 ㅠㅠ

첨부파일로 보여주는 이미지 모습 그대로를 지키면서 ( 소계가 중간에 유지가 되는 )

SORT라는 컬럼 값에 맞게 SORT를 하게 되면 첨부파일에 보이는 사진에 있는 CODE 컬럼이 지정한대로 정렬되게 되어있습니다 ㅠ

이 모습 그대로 유지하면서 CODE만 SORT컬럼에 맞게 정렬하고 싶은데 방법이 있을까요?ㅠ

by 마농 [2018.12.20 13:21:26]

1. H 와 U 의 조인 조건이 없는게 이상합니다.
2. 컬럼명 앞에 알리아스가 없어서 해당 컬럼이 어느 테이블 컬럼인지? 쿼리 분석이 어렵습니다.
3. 정렬은
- sort 항목도 group by 에 참여시키세요. 단 코드와 묶어서 롤업 하세요. 괄호 이용
- grouping(항목) 을 정렬에 이용하세요.


by 열정가이 [2018.12.20 15:15:21]

아 제가 소스코드를 다 안가져오 오고 부분만 가져오려했는데 오히려 보기 어렵게 했네요 ㅠ 죄송합니다 ㅠ

말씀해주신대로 grouping 찾아서 해결했습니다!! 감사합니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입