원본데이터
WITH T AS
(
SELECT 'A' CD,'1' NO1, '2' NO2, '3' NO3, '4' NO4, '5' NO5, '6' NO6 FROM DUAL UNION ALL
SELECT 'B' CD,'1' NO1, NULL NO2, '3' NO3, '4' NO4, NULL NO5, '6' NO6 FROM DUAL UNION ALL
SELECT 'C' CD,NULL NO1, NULL NO2, NULL NO3, '4' NO4, '5' NO5, '6' NO6 FROM DUAL UNION ALL
SELECT 'D' CD,NULL NO1, '2' NO2, '3' NO3, '4' NO4, NULL NO5, '6' NO6 FROM DUAL UNION ALL
SELECT 'E' CD,NULL NO1, NULL NO2, NULL NO3, NULL NO4, NULL NO5, NULL NO6 FROM DUAL UNION ALL
SELECT 'F' CD,'1' NO1, '2' NO2, '3' NO3, '4' NO4, NULL NO5, NULL NO6 FROM DUAL
)
SELECT *
FROM T ;
A |
1 |
2 |
3 |
4 |
5 |
6 |
B |
1 |
|
3 |
4 |
|
6 |
C |
|
|
|
4 |
5 |
6 |
D |
|
2 |
3 |
4 |
|
6 |
E |
|
|
|
|
|
|
F |
1 |
2 |
3 |
4 |
|
|
원본데이터를 가지고 빈값을 제거한 좌측정렬
A |
1 |
2 |
3 |
4 |
5 |
6 |
B |
1 |
3 |
4 |
6 |
|
|
C |
4 |
5 |
6 |
|
|
|
D |
2 |
3 |
4 |
6 |
|
|
E |
|
|
|
|
|
|
F |
1 |
2 |
3 |
4 |
|
|
데이터를 만드시면 됩니다.
제가 테스트한 환경은 10g라 pivot기능을 사용 못하지만 11g인 분들은 pivot으로 푸셔도 됩니다.