<기본 테이터>
학교명 과목A 과목B 과목C 과목D
xxx고교 105.1 104.5 100.8 104.8
ㅇㅇ여고 101.3 102.5 109.1 103.3
yyy고교 121.2 119.3 103.1 114.5
zzz여고 104.2 100.1 103.8 113.2
------------------------ 이 하 생 략 ---------------------------
이런 데이터가 있는데 이걸.....
학교명 과목A 학교명 과목B 학교명 과목C 학교명 과목D
yyy고교 121.2 yyy고교 119.3 ㅇㅇ여고 109.1 yyy고교 114.5
xxx고교 105.1 xxx고교 104.5 zzz여고 103.8 zzz여고 113.2
이런 식으로 과목별 학교 순위를 매기려고 하는데....
SELECT edu_b AS 'sch_name', edu_av AS '과목A' FROM tblstscore WHERE 1 = 1 UNION ALL SELECT edu_b AS 'sch_name', edu_aw AS '과목B' FROM tblstscore WHERE 1 = 1 UNION ALL SELECT edu_b AS 'sch_name', edu_ax AS '과목C' FROM tblstscore WHERE 1 = 1
이렇게 UNION 으로 붙이긴 했는데.. 옆으로 보내는 방법을 모르겠습니다..;;
고수님들 도와주세요~
SELECT rn , MIN(CASE lv WHEN 1 THEN edu_b END) 학교A , MIN(CASE lv WHEN 1 THEN edu_av END) 과목A , MIN(CASE lv WHEN 2 THEN edu_b END) 학교B , MIN(CASE lv WHEN 2 THEN edu_aw END) 과목B , MIN(CASE lv WHEN 3 THEN edu_b END) 학교C , MIN(CASE lv WHEN 3 THEN edu_ax END) 과목C , MIN(CASE lv WHEN 4 THEN edu_b END) 학교D , MIN(CASE lv WHEN 4 THEN edu_ay END) 과목D FROM (SELECT edu_b , edu_av , edu_aw , edu_ax , edu_ay , @rn := CASE @lv WHEN lv THEN @rn + 1 ELSE 1 END AS rn , @lv := lv lv FROM (SELECT * FROM tblstscore a , (SELECT 1 lv UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 ) b , (SELECT @rn := 0 , @lv := 0 ) c ORDER BY lv , CASE lv WHEN 1 THEN edu_av WHEN 2 THEN edu_aw WHEN 3 THEN edu_ax WHEN 4 THEN edu_ay END DESC ) a ) a GROUP BY rn ;