728x90
320x100
아래 TEST 테이블의 테이터를
VERTICAL(종/세로) 에서
HORIZONTAL(횡/가로) 로
변환해 보려고 한다.
BEFORE : TEST (VERTICAL), 세로 데이터
TEST | ||
NAME | CLASS | SCORE |
AAA | KOR | 100 |
AAA | ENG | 100 |
AAA | CHN | 50 |
BBB | KOR | 90 |
BBB | ENG | 70 |
BBB | CHN | 30 |
CCC | KOR | 80 |
CCC | ENG | 80 |
CCC | CHN | 40 |
AFTER : TEST (HORIZONTAL), 가로 데이터
TEST | |||
NAME | KOR | ENG | CHN |
AAA | 100 | 100 | 50 |
BBB | 90 | 70 | 30 |
CCC | 80 | 80 | 40 |
①
먼저 CASE WHEN 을 사용하여 데이터의 정렬을 가로화 해보자.
SELECT NAME,
CASE WHEN CLASS = 'KOR' THEN SCORE END AS KOR,
CASE WHEN CLASS = 'ENG' THEN SCORE END AS ENG,
CASE WHEN CLASS = 'CHN' THEN SCORE END AS CHN
FROM TEST;
[실행결과]
TEST NAME KOR ENG CHN AAA 100 NULL NULL AAA NULL 100 NULL AAA NULL NULL 50 BBB 90 NULL NULL BBB NULL 70 NULL BBB NULL NULL 30 CCC 80 NULL NULL CCC NULL 80 NULL CCC NULL NULL 40
②
이제 NAME별 GROUP화 시킨후, MAX()를 사용하여 TEST (HORIZONTAL)를 쉽게 구할 수 있다.
SELECT NAME,
MAX( CASE WHEN CLASS = 'KOR' THEN SCORE END ) AS KOR,
MAX( CASE WHEN CLASS = 'ENG' THEN SCORE END ) AS ENG,
MAX( CASE WHEN CLASS = 'CHN' THEN SCORE END ) AS CHN
FROM TEST
GROUP BY NAME;
[실행결과]
TEST NAME KOR ENG CHN AAA 100 100 50 BBB 90 70 30 CCC 80 80 40
※ 참고 자료.
CASE WHEN 을 사용하여 조건에 맞는 결과값을 나타내보자.
CASE WHEN 을 사용하여 조건에 맞는 결과값을 나타내보자.
SQL Query 문에서 if같은 조건문을 사용하고자 할때, CASE 문을 사용한다. ※ 사용법 CASE WHEN 조건1 THEN '결과값1' WHEN 조건2 THEN '결과값2' . . . ELSE '최후의 결과값' END - WHEN과 THEN은 한쌍으로 사용되어야
r-ayo.com
MAX vs MIN (최대 vs 최소) 함수를 알아보자
MAX vs MIN (최대 vs 최소) 함수를 알아보자
MAX(컬럼명) vs MIN(컬럼명) 해당 함수는 숫자만이 아닌 문자형 데이터에도 사용할 수 있다. 최대값 구하기 SELECT MAX(컬럼명) FROM 테이블; 최소값 구하기 SELECT MIN(컬럼명) FROM 테이블; USER_TABLE ID USER_NM
r-ayo.com
728x90
반응형
'MariaDB SQL' 카테고리의 다른 글
MariaDB에서 NVL()을 사용하려면? (0) | 2023.03.30 |
---|---|
INSERT 한번에 여러개를 해보자. (0) | 2023.03.21 |
MAX vs MIN (최대 vs 최소) 함수를 알아보자 (0) | 2023.03.03 |
CASE WHEN 을 사용하여 조건에 맞는 결과값을 나타내보자. (0) | 2023.03.02 |
GROUP_CONCAT ()으로 여러 행의 문자열을 합칠 수 있다. (0) | 2023.02.28 |