어느날 아래와 같은 구조를 가진 테이블을
idx |
area1 |
area2 |
area3 |
area4 |
area5 |
1 |
10 |
20 |
30 |
40 |
50 |
2 |
11 |
21 |
31 |
41 |
51 |
아래와 같이 변경 해야 하는 경우가 닥치고 말았다
no |
position |
value |
1 |
area1 |
10 |
1 |
area2 |
20 |
1 |
area3 |
30 |
1 |
area4 |
40 |
1 |
area5 |
50 |
2 |
area1 |
11 |
2 |
area2 |
21 |
2 |
area3 |
31 |
2 |
area4 |
41 |
2 |
area5 |
51 |
해결책 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
SELECT
`no`,
CASE
WHEN x=1 THEN 'area1'
WHEN x=2 THEN 'area2'
WHEN x=3 THEN 'area3'
WHEN x=4 THEN 'area4'
WHEN x=5 THEN 'area5'
END `position`,
CASE
WHEN x=1 THEN area1
WHEN x=2 THEN area2
WHEN x=3 THEN area3
WHEN x=4 THEN area4
WHEN x=5 THEN area5
END `value
FROM (
select * from default_data a,
(
select 1 AS x
union all select 2 AS x
union all select 3 AS x
union all select 4 AS x
union all select 5 AS x
) b
)
ORDER BY `NO`, `NUMBERS` ASC;
|
cs |
[출처] Mysql 가로 컬럼 형태를 세로 rows 형태 로 변경|작성자 RS
'Database > MySQL' 카테고리의 다른 글
MySQL 그룹별 시퀀스 번호 지정하기 (0) | 2020.11.18 |
---|---|
MySQL 특정날짜 사이의 월 목록 가져오기 (0) | 2020.11.04 |
MySQL 특정날짜 사이의 날짜 목록 가져오기 (0) | 2020.10.20 |
계층구조 테이블에서 계층쿼리 구현 (0) | 2020.09.17 |