안녕하세요
고생이 많으십니다.
일이 진행이 안되서 문의 드립니다.
궁금한게 2가지 인데요.
하나는 ...
그룹이 되는 2개의 칼럼과 기타 다른 정보가 있는 칼럼들이 있는 테이블이 있습니다.
테이블에서 SUM(칼럼3) 정보를 포함한 목록을 가져오는데... 소계를 해볼까해서
GROUP BY ROLLUP (칼럼1, 칼럼2)
이렇게 소계를 포함한 ROW들을 가져오는데.. 그럼 기준이 아닌 칼럼의 정보들은 어떻게 가져오는지 궁금합니다.
다른 분들꼐서는 어떤 방법을 사용하시는지요?
노하우 좀 알려주시면 감사하겠습니다. 팁이라도... 굽신굽신..
또 하나의 질문..이요..
UNION을 이용해서 위 문제 해결을 시도했습니다.
그런데 다른 부분에서 막혀서요..
쿼리는.. 아래...참고를..
WITH
T1 AS (
SELECT '00' CODE1, '12' CODE2, '가' CODE3, '2012' YEAR, '콩나물' NAME, 1 POINT, 'DASD' ETC1, 33 ETC2 FROM DUAL
UNION ALL
SELECT '00', '12', '나', '2012', '화분', 2, 'ASFAS', 23 FROM DUAL
UNION ALL
SELECT '00', '12', '아', '2012', '책', 2, 'ASFAS', 23 FROM DUAL
UNION ALL
SELECT '00', '15', '타', '2012', '막걸리', 2, 'ASFAS', 23 FROM DUAL
UNION ALL
SELECT '01', '18', '가', '2012', '맥주', 2, 'ASFAS', 23 FROM DUAL
UNION ALL
SELECT '01', '18', '바', '2012', '에프킬라', 2, 'ASFAS', 23 FROM DUAL
UNION ALL
SELECT '01', '18', '카', '2012', '귤', 2, 'ASFAS', 23 FROM DUAL
UNION ALL
SELECT '07', '18', '카', '2012', '우유', 2, 'ASFAS', 23 FROM DUAL
UNION ALL
SELECT '07', '18', '타', '2012', '화장지', 2, 'ASFAS', 23 FROM DUAL
UNION ALL
SELECT '07', '23', '파', '2012', '열쇠', 2, 'ASFAS', 23 FROM DUAL
)
SELECT
'1' AS SEQ,
CODE1,
CASE WHEN YEAR >= '2008' THEN CODE2 ELSE CODE3 END AS CODE,
YEAR,
NAME,
POINT,
ETC1,
ETC2
FROM T1
UNION ALL
SELECT
'2' AS SEQ,
CODE1,
CASE WHEN YEAR >= '2008' THEN CODE2 ELSE CODE3 END AS CODE,
'' AS YEAR,
'' AS NAME,
SUM(POINT) AS POINT,
'' AS ETC1,
0 AS ETC2
FROM T1
GROUP BY ROLLUP (CODE1,
CASE WHEN YEAR >= '2008' THEN CODE2 ELSE CODE3 END )
ORDER BY CODE1, CODE, SEQ --CASE WHEN 4 >= '2008' THEN CODE2 ELSE CODE3 END
이렇게 해서 소계가 있는 ROW까지는 보았는데..
년도 정보에 따라 CODE2와 CODE3 를 바꿔가며 정렬을 해야해서요...
ORDER BY에 CASE문을 사용하고 싶어요..
참고.로....
CODE2와 CODE3이
자료 형식이 달라요.
CODE2 숫자..
CODE3 문자..
그리고.
ORDER BY 에 CASE 문을 써봤더니... UNION 이라서 그런가...
ORA-01785 : ORDER BY item must be the number of a select-list expression..
이라고 하네요;;;;
아 어떻게 해야할까요? ㅠㅠ
도움 바랍니다...
그럼 고생하셔요..
|