데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
A테이블
--------------------------------------------------------
mem.no name bcno regdt cmtno cmt
123 홍길동 134 11 66 안녕하세여
123 홍길동 134 11 65 저는
123 홍길동 134 11 64 홍길동입니다
123 홍길동 124 12 66 안녕하세여
123 홍길동 124 12 65 저는
123 홍길동 124 12 64 홍길동2입니다
145 길동이 143 22 66 안녕하세여
145 길동이 143 22 65 저는
145 길동이 143 22 64 길동이입니다
--------------------------------------------------------
결과
---------------------------------------------------------------
mem.no name bcno regdt cmt1 cmt2 cmt3
123 홍길동 134 11 안녕하세여 저는 홍길동입니다
123 홍길동 124 12 안녕하세여 저는 홍길동2입니다
145 길동이 143 22 안녕하세여 저는 길동이입니다
---------------------------------------------------------------
오라클입니다.. 어떤식으로 짜야하나요 ㅠㅠㅠㅠ
Comment 1
-
건우아빠
2018.12.07 22:47
오라클도 동일 할겁니다.
DECODE함수를 이용하실수도 있을듯 한데
with res
as
(
select 123 mem_no ,'홍길동' name ,134 bcno , 11 regdt, 66 cmtno ,'안녕하세여' cmt union all
select 123 ,'홍길동' ,134 , 11 , 65 ,'저는' union all
select 123 ,'홍길동' ,134 , 11 , 64 ,'홍길동입니다' union all
select 123 ,'홍길동' ,124 , 12 , 66 ,'안녕하세여' union all
select 123 ,'홍길동' ,124 , 12 , 65 ,'저는' union all
select 123 ,'홍길동' ,124 , 12 , 64 ,'홍길동2입니다' union all
select 145 ,'길동이' ,143 , 22 , 66 ,'안녕하세여' union all
select 145 ,'길동이' ,143 , 22 , 65 ,'저는' union all
select 145 ,'길동이' ,143 , 22 , 64 ,'길동이입니다' )
select mem_no , name , bcno , regdt
, max(case cmtno when 66 then cmt end ) cmt1
, max(case cmtno when 65 then cmt end ) cmt2
, max(case cmtno when 64 then cmt end ) cmt3
from res
group by mem_no , name , bcno , regdt