mysql 프로시저로 피벗 탈모올거같아요 도와주세요 0 4 710

by SUMMER [PL/SQL] 피벗 이차원배열 배열 행열바꾸기 [2021.03.05 15:19:49]


이름 과목 점수
A 10
A -
A 8
B 9
B 7
B -

안녕하세요. 

프로시저로 위와 같이 데이터를 추출하였는데

아래와 같이 보고싶은 경우에는 어떻게 할 수 있을까요 

피벗으로 

SELECT 

이름,

MAX(CASE WHEN ~THEN END) AS '국',

MAX(CASE WHEN ~THEN END) AS '영',

MAX(CASE WHEN ~THEN END) AS '수',

FORM [테이블]

GRUOP BY 이름;

 

위와 같은 형태로 피벗을 구현하였는데,

이럴경우 과목이 추가되는 거처럼 열이 동적일 경우 소스를 계속 수정해주어야해서 확장성이 고려되지 않는거 같습니다.

 

확장성을 고려하여 프로시저에서 아래처럼 이차월 배열 형태로 구현할수 있는 방법이 있을까요 ??

 
A 10 - 8
B 9 7 -

 

작은 도움이라도 주신다면 정말 정말 감사드립니다 .

by 마농 [2021.03.05 16:21:34]

SQL 만으로는 가변열을 구현할 수 없습니다.


by SUMMER [2021.03.05 16:53:10]

답변 감사합니다. 프로시저 반복문을 사용해서도 구현할 수 있는 방법이 없는것일까요.


by 마농 [2021.03.05 16:58:02]

동적쿼리로 구현하시면 됩니다.


by SUMMER [2021.03.05 23:10:58]

오대박 동적쿼리로 구현했어요 감사해요 !!! 

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