group by rollup 순서 변경 등 0 1 5,750

by 트집이 [SQL Query] oracle plsql rollup [2023.04.22 14:35:05]


안녕하세요. 고수님들이 도움 부탁드립니다.

WITH T AS (	
	SELECT 'A' C1, 'B' C2, 'C' C3, 'X' C4, 10 C5 FROM DUAL 
	UNION ALL
	SELECT 'A', 'B', 'C', 'X', 10 FROM DUAL
	UNION ALL
	SELECT 'A', 'B', 'C', 'X', 10 FROM DUAL
	UNION ALL
	SELECT 'A', 'B', 'C', 'Y', 10 FROM DUAL
	UNION ALL
	SELECT 'A', 'B', 'C', 'Y', 10 FROM DUAL
	UNION ALL
	SELECT 'A', 'B', 'C', 'Y', 10 FROM DUAL
	UNION ALL
	SELECT 'A', 'B', 'C', 'Y', 10 FROM DUAL
	UNION ALL
	SELECT 'A', 'B', 'C', 'Z', 10 FROM DUAL
	UNION ALL
	SELECT 'A', 'B', 'C', 'Z', 10 FROM DUAL
	UNION ALL
	SELECT 'A', 'B', 'C', 'Z', 10 FROM DUAL
) 
SELECT C1, C2, C3, 'Total' C4, SUM(C5) E
FROM T
GROUP BY ROLLUP((C1,C2,C3));

위의 쿼리 결과를 아래와 같이 변경하고 싶은데 방법이 있을까요?

C1 C2 C3 C4 C5
A B C Total 100
A B C Total 100

1. 마직막 합산 결과의 rollup 행에서 A, B, C 컬럼의 값을 위(?)의 A, B, C 컬럼의 값을 그대로 넣어주고 싶어요.

C1 ~ C3의 값은 where절에 조건으로 걸리기 때문에 모두 동일한 데이터가 나오고 있어요.

2. 마지막 합산 결과의 rollup 행을 제일 위(첫번째 행)으로 옮기고 싶어요.

 

감사합니다.

by 마농 [2023.04.23 21:39:32]
SELECT c1, c2, c3
     , 'Total' c4
     , SUM(c5) e
  FROM t
 WHERE c1 = 'A'
   AND c2 = 'B'
   AND c3 = 'C'
 GROUP BY c1, c2, c3, ROLLUP(1)  -- 1. 
 ORDER BY GROUPING(1) DESC       -- 2. 어차피 같은 값인데 순서가 의미가 있을런지?
;

 

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