문제
다음 UNPIVOT 결과로 가장 적절한 것은?
<원본 테이블>
| 상품 | 1월 | 2월 | 3월 |
|---|---|---|---|
| A | 100 | NULL | 300 |
SQLSELECT 상품, 월, 금액 FROM 매출 UNPIVOT ( 금액 FOR 월 IN ("1월", "2월", "3월") );
<조건> UNPIVOT INCLUDE NULLS를 사용하지 않는다.
① 1월, 2월, 3월이 모두 출력되고 모든 금액이 채워져 있다. ② 2월 행은 제외되고 1월과 3월 행만 출력된다. ③ 2월 행이 출력되며 금액은 NULL이다. ④ 모든 월이 출력되지만 금액이 원본과 다르게 변환된다.
정답
2번
해설
정답: 2. Oracle UNPIVOT은 기본적으로 NULL 값을 제외하므로 2월 행은 출력되지 않는다.
오답 풀이
- 1번: NULL인 2월 금액이 있으므로 모든 금액이 채워진 결과가 아니다.
- 2번: INCLUDE NULLS가 없으면 NULL 값 행은 제외된다.
- 3번: INCLUDE NULLS를 사용한 경우에 가까운 결과이다.
- 4번: UNPIVOT은 열을 행으로 변환할 뿐 금액을 임의로 바꾸지 않는다.
보충 개념 UNPIVOT은 여러 컬럼을 행으로 변환한다. NULL 행까지 포함하려면 INCLUDE NULLS 옵션을 명시해야 한다.