문제
다음 UNPIVOT 결과에 포함되는 AMOUNT_TYPE 값으로 가장 적절한 것은?
<원본>
| ID | AMOUNT1 | AMOUNT2 | AMOUNT3 |
|---|---|---|---|
| 1 | 10 | 20 | 30 |
SQLSELECT ID, AMOUNT_TYPE, AMOUNT FROM T UNPIVOT ( AMOUNT FOR AMOUNT_TYPE IN (AMOUNT3, AMOUNT2, AMOUNT1) );
① AMOUNT1만 포함된다. ② AMOUNT3, AMOUNT2, AMOUNT1이 포함된다. ③ AMOUNT2만 포함된다. ④ 모든 AMOUNT 값이 NULL로 출력된다.
정답
2번
해설
정답: 2. UNPIVOT은 IN 목록에 지정된 여러 컬럼을 행으로 변환한다. 따라서 AMOUNT3, AMOUNT2, AMOUNT1이 AMOUNT_TYPE 값으로 포함된다.
오답 풀이
- 1번: AMOUNT1 하나만 변환되는 것이 아니다.
- 2번: IN 목록에 지정된 세 컬럼이 모두 행으로 변환된다.
- 3번: AMOUNT2 하나만 변환되는 것이 아니다.
- 4번: 원본 값이 10, 20, 30으로 존재하므로 모두 NULL이 아니다.
보충 개념 UNPIVOT은 여러 컬럼을 행으로 변환한다. 결과 행의 출력 순서가 중요하면 ORDER BY를 별도로 작성해야 한다.