1. 아래와 같은 테이블이 있습니다.
A | B | C | D | E |
2 | 바 | 구분1 | NULL | NULL |
2 | 바 | 구분2 | NULL | NULL |
4 | 크 | 구분1 | NULL | NULL |
4 | 크 | 구분2 | NULL | NULL |
4 | 크 | 구분3 | NULL | NULL |
5 | 로 | 구분3 | 891 | NULL |
6 | 러 | 구분3 | 891 | NULL |
7 | 라 | 구분3 | 891 | NULL |
8 | 르 | 구분2 | 급 | NULL |
9 | 재 | 구분2 | 급 | NULL |
10 | 판 | 구분2 | 비 | NULL |
11 | C | 구분2 | 비 | NULL |
12 | 삼 | 구분1 | 식 | NULL |
13 | 섬 | 구분1 | 식 | NULL |
16 | 마 | 구분1 | 일 | 혜성 |
18 | 머 | 구분1 | 일 | 목성 |
19 | 임 | 구분1 | 전 | 태양 |
20 | 음 | 구분1 | 전 | 지구 |
2. A~E 칼럼이 있습니다. 이 중 C, D칼럼의 세 개의 값(구분1~3)을 아래와 같이 각각의 칼럼으로 만들고 싶습니다.
A | B | 구분1 | 구분2 | 구분3 | E |
2 | 바 | NULL | NULL | ||
2 | 바 | NULL | NULL | ||
4 | 크 | NULL | NULL | ||
4 | 크 | NULL | NULL | ||
4 | 크 | NULL | NULL | ||
5 | 로 | 891 | NULL | ||
6 | 러 | 891 | NULL | ||
7 | 라 | 891 | NULL | ||
8 | 르 | 급 | NULL | ||
9 | 재 | 급 | NULL | ||
10 | 판 | 비 | NULL | ||
11 | C | 비 | NULL | ||
12 | 삼 | 식 | NULL | ||
13 | 섬 | 식 | NULL | ||
16 | 마 | 일 | 혜성 | ||
18 | 머 | 일 | 목성 | ||
19 | 임 | 전 | 태양 | ||
20 | 음 | 전 | 지구 |
3. 그러면 결과가 이렇게 나옵니다.
A | B | 구분1 | 구분2 | 구분3 | E |
2 | 바 | NULL | NULL | NULL | |
4 | 크 | NULL | NULL | NULL | NULL |
5 | 로 | 891 | NULL | ||
6 | 러 | 891 | NULL | ||
7 | 라 | 891 | NULL | ||
8 | 르 | 급 | NULL | ||
9 | 재 | 급 | NULL | ||
10 | 판 | 비 | NULL | ||
11 | C | 비 | NULL | ||
12 | 삼 | 식 | NULL | ||
13 | 섬 | 식 | NULL | ||
16 | 마 | 일 | 혜성 | ||
18 | 머 | 일 | 목성 | ||
19 | 임 | 전 | 태양 | ||
20 | 음 | 전 | 지구 |
4. 빈칸들을 없앤 최종결과는 다음과 같습니다.
A | B | 구분1 | 구분2 | 구분3 | E |
2 | 바 | NULL | NULL | NULL | |
4 | 크 | NULL | NULL | NULL | NULL |
5 | 로 | 891 | NULL | ||
6 | 러 | 891 | NULL | ||
7 | 라 | 891 | NULL | ||
8 | 르 | 급 | NULL | ||
9 | 재 | 급 | NULL | ||
10 | 판 | 비 | NULL | ||
11 | C | 비 | NULL | ||
12 | 삼 | 식 | NULL | ||
13 | 섬 | 식 | NULL | ||
16 | 마 | 일 | 혜성 | ||
18 | 머 | 일 | 목성 | ||
19 | 임 | 전 | 태양 | ||
20 | 음 | 전 | 지구 |
-> SELECT * FROM TABLE 하면 1번과 같이 조회됩니다. 그런데 C, D 칼럼을 각 열로 꺼내 4와 같이 만들기 위해서 어떻게 해야하나요?
초보자여서 그런지 잘 모르겠습니다. 알려주세요.... 부탁드립니다. 감사합니다.
안녕하세요~!
SELECT A,B, MAX(CASE C WHEN '구분1' THEN D ELSE '' END), MAX(CASE C WHEN '구분2' THEN D ELSE '' END), MAX(CASE C WHEN '구분3' THEN D ELSE '' END), E FROM TABLE GROUP BY A,B,E 이렇게 하면 되지 않을까요~?
감사합니다~~