예전에 러드님이 놀려주신 쿼리문을 보며 공부하고 있던 중에 모르는 것이 있어 염치불구하고 질문드립니다.
예전 질문 내용은
교시 월 화 수 목 금
5교시 수학
5교시 국어
6교시 영어
6교시 과학 국사
7교시 사회
8교시 영어2
다음과 같이 변경하려면,
교시 월 화 수 목 금
5교시 수학 국어
6교시 영어 국사
6교시 과학
7교시 사회
8교시 영어2
이에 대해 답변해 주신 쿼리문은
WITH A AS
(
SELECT '5교시' TT, '수학' W1, NULL W2, NULL W3, NULL W4, NULL W5 FROM DUAL UNION ALL
SELECT '5교시' TT, NULL W1, '국어' W2, NULL W3, NULL W4, NULL W5 FROM DUAL UNION ALL
SELECT '6교시' TT, '영어' W1, NULL W2, NULL W3, NULL W4, NULL W5 FROM DUAL UNION ALL
SELECT '6교시' TT, '과학' W1, '국사' W2, NULL W3, NULL W4, NULL W5 FROM DUAL UNION ALL
SELECT '7교시' TT, '사회' W1, NULL W2, NULL W3, NULL W4, NULL W5 FROM DUAL UNION ALL
SELECT '8교시' TT, '영어2' W1, NULL W2, NULL W3, NULL W4, NULL W5 FROM DUAL
)
SELECT TT
, MAX( CASE WHEN CHK = 1 THEN W1 END ) W1
, MAX( CASE WHEN CHK = 2 THEN W1 END ) W2
FROM (
SELECT TT, CHK, W1
, ROW_NUMBER() OVER( PARTITION BY TT, CHK ORDER BY ROWNUM ) RN
FROM (
SELECT TT, W1, '1' CHK
FROM A
WHERE W1 IS NOT NULL
UNION ALL
SELECT TT, W2, '2' CHK
FROM A
WHERE W2 IS NOT NULL
)
)
GROUP BY TT, RN
ORDER BY 1
여기에서 with as 문을 일반 select 로 시작하는 구문으로 바꿔보려 하는데 잘 안됩니다.
부디 도움을 구합니다.
|