S_MIN | R_MIN | P_PER |
0 | 0 | 0 |
0 | 0 | 0 |
0 | 0 | 0 |
73672 | 234576 | 31 |
0 | 0 | 0 |
0 | 0 | 0 |
0 | 0 | 0 |
0 | 0 | 0 |
0 | 0 | 0 |
위와 같은 테이블 데이터를 피벗테이블로 만들고 싶습니다.
9개의 행이 열로 변해서 1 2 3 4 5 6 7 8 9 가 되고
S_MIN, R_MIN, P_PER 의 3개의 열을 행으로 만들려고합니다.
ROW 데이터에 키처럼 쓸 수 있는게 있다면 좋은데 이건 어떻게 해야 할지 감이 아예 안잡히네요..
어떤식으로 구성해서 할까요?
MYSQL 입니다 ㅠ
SELECT lv , CASE lv WHEN 1 THEN 's_min' WHEN 2 THEN 'r_min' WHEN 3 THEN 'p_per' END gb , MIN(CASE rn WHEN 1 THEN v END) v1 , MIN(CASE rn WHEN 2 THEN v END) v2 , MIN(CASE rn WHEN 3 THEN v END) v3 , MIN(CASE rn WHEN 4 THEN v END) v4 , MIN(CASE rn WHEN 5 THEN v END) v5 , MIN(CASE rn WHEN 6 THEN v END) v6 , MIN(CASE rn WHEN 7 THEN v END) v7 , MIN(CASE rn WHEN 8 THEN v END) v8 , MIN(CASE rn WHEN 9 THEN v END) v9 FROM (SELECT rn , lv , CASE lv WHEN 1 THEN s_min WHEN 2 THEN r_min WHEN 3 THEN p_per END v FROM (SELECT @rn := @rn + 1 rn , s_min, r_min, p_per FROM (SELECT 0 s_min, 0 r_min, 0 p_per UNION ALL SELECT 0, 0, 0 UNION ALL SELECT 0, 0, 0 UNION ALL SELECT 73672, 234576, 31 UNION ALL SELECT 0, 0, 0 UNION ALL SELECT 0, 0, 0 UNION ALL SELECT 0, 0, 0 UNION ALL SELECT 0, 0, 0 UNION ALL SELECT 0, 0, 0 ) a , (SELECT @rn := 0) b ) c , (SELECT 1 lv UNION ALL SELECT 2 UNION ALL SELECT 3 ) d ) e GROUP BY lv ORDER BY lv ;