DB Table의 결과를 2차원으로 출력하고 싶습니다. 0 2 171

by 컴맹 [2021.10.19 16:42:02]


아래와 같은 수강신청 테이블이 있을때,

 

학생명 과목
A mat
B eng
C kor
D eng
E mat
F kor
G mat

 

이렇게 되어 있을때,

쿼리를 사용해서 아래와 같이 출력하게 할수있을까요?

아~ MySql사용중입니다.

 

mat eng kor
A B C
E D F
G    

 

물론,

 

SELECT 학생명 FROM 수강신청 WHERE 과목명 = 'mat';
SELECT 학생명 FROM 수강신청 WHERE 과목명 = 'eng';
SELECT 학생명 FROM 수강신청 WHERE 과목명 = 'kor';

 

이렇게 3번쿼리를 날리면 되긴한데 , 한번의 쿼리로 가능하지 않을까 싶어서요.

 

아~ 학생이 같은 과목을 두번신청하지는 않습니다.

 

 

by 마농 [2021.10.19 18:16:13]
WITH t AS
(
SELECT 'A' id, 'mat' subj
UNION ALL SELECT 'B', 'eng'
UNION ALL SELECT 'C', 'kor'
UNION ALL SELECT 'D', 'eng'
UNION ALL SELECT 'E', 'mat'
UNION ALL SELECT 'F', 'kor'
UNION ALL SELECT 'G', 'mat'
)
SELECT rn
     , MIN(CASE subj WHEN 'mat' THEN id END) mat
     , MIN(CASE subj WHEN 'eng' THEN id END) eng
     , MIN(CASE subj WHEN 'kor' THEN id END) kor
  FROM (SELECT id, subj
             , ROW_NUMBER() OVER(PARTITION BY subj ORDER BY id) rn
          FROM t
        ) a
 GROUP BY rn
;

 


by 컴맹 [2021.10.21 10:31:31]

오~ 이런방법이!!!

정말 감사합니다.^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입