교시 월 화 수 목 금
5교시 수학
5교시 국어
6교시 영어
6교시 과학 국사
7교시 사회
8교시 영어2
다음과 같이 변경하려면,
교시 월 화 수 목 금
5교시 수학 국어
6교시 영어 국사
6교시 과학
7교시 사회
8교시 영어2
여기에서 with as 문을 일반 select 로 시작하는 구문으로 바꿔보려 하는데 잘 안됩니다.
부디 도움을 구합니다.
-------------------------------------
이에 대한 햇살한조각님의 답변은,
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
(
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
)
WHERE W1 IS NOT NULL
UNION ALL
SELECT TT, W2, '2' CHK
FROM
(
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
)
WHERE W2 IS NOT NULL
)
)
GROUP BY TT, RN
ORDER BY 1
이 쿼리문을 이용해서 일주일 치를 모두 구하려고 하니 쿼리문이 한도 없이 길어 지네요.
염치불구하고 혹시라도 간단하게 구현할 수 있는 방법은 없을까요?
|