database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41439 게시물 읽기
No. 41439
세로로 된 데이터를 가로로 보여주기
작성자
webma(jikoo27)
작성일
2017-07-03 19:50
조회수
6,766

안녕하세요.

7개의 테이블을 조인을 해서 하나의 데이터로 만들어 보여줘야 하는데요

쿼리를 만들다 질문이 있어 이렇게 글을 씁니다.

 

아래는 실제 데이터 구조인데요

SEQ 값으로 관계가 설정이 되어 있습니다.

 

--1번테이블

 

SEQ | NAME | CONTACT | EMAIL | ADDRESS |

1 홍길동1 000-111-222 aaa@aaa.com 서울시 강남구 도곡동

2 홍길동2 000-222-333 bbb@aaa.com 대전시 대덕구

 

--2번 테이블

 

SEQ | SCHOOL_NAME | MAJOR | ENTSDATE | ENTEDATE | GRADE | LASTGRADE

1 전문학사 물리 19980102 19990201 10 12

1 석사 수학 19990202 19990201 12 13

2 전문학사 물리 19980102 19990201 10 12

2 석사 수학 19990202 19990201 12 13

 

 

아래 처럼 데이터를 하나의 로우로 합쳐서 보여주고 싶은데요

이게 가능할지 몰라 이렇게 질문을 드립니다.

 

현재는 1번테이블 기준으로 2번 테이블의 로우가 밑으로 떨어져 있는데요

아래처럼 하나의 로우로 7개의 모든 컬럼을 합쳐서 보여 주라고 하는데

어떻게 해야할지 막막해서 도움을 받고자 질문을 올립니다.

 

 

 

 

SEQ | NAME | CONTACT | EMAIL | ADDRESS |SCHOOL_NAME | MAJOR | ENTSDATE | ENTEDATE | GRADE | LASTGRADE |SCHOOL_NAME | MAJOR2| ENTSDATE2 | ENTEDATE2 | GRADE2 | LASTGRADE 2

1 홍길동1 000-111 aaa@aaa.com 서울시 전문학사 물리 19980102 19990201 10 12 석사 수학 19990202 19990201 12 13

2 홍길동2 000-111 aaa@aaa.com 서울시 전문학사 수학 19980102 19990201 10 12 석사 수학 19990202 19990201 12 13

 

도움울 받고자 이렇게 질문을 올려봅니다.

그럼 수고하세요

이 글에 대한 댓글이 총 2건 있습니다.

WITH t1 AS
(
SELECT 1 seq, '홍길동1' name, '000-111-222' contact,
'aaa@aaa.com' email, '서울시 강남구 도곡동' address FROM dual
UNION ALL SELECT 2, '홍길동2', '000-222-333',
'bbb@aaa.com', '대전시 대덕구' FROM dual
)
, t2 AS
(
SELECT 1 seq, '전문학사' school_name, '물리' major, '19980102' entsdate, '19990201' entedate, '10' grade, '12' lastgrade FROM dual
UNION ALL SELECT 1, '석사'    , '수학', '19990202', '19990201', '12', '13' FROM dual
UNION ALL SELECT 2, '전문학사', '물리', '19980102', '19990201', '10', '12' FROM dual
UNION ALL SELECT 2, '석사'    , '수학', '19990202', '19990201', '12', '13' FROM dual
)
SELECT a.seq
     , a.name, a.contact, a.email, a.address
     , b.school_name1, b.major1, b.entsdate1, b.entedate1, b.grade1, b.lastgrade1
     , b.school_name2, b.major2, b.entsdate2, b.entedate2, b.grade2, b.lastgrade2
  FROM t1 a
     , (SELECT seq
             , MIN(DECODE(rn, 1, school_name)) school_name1
             , MIN(DECODE(rn, 1, major      )) major1
             , MIN(DECODE(rn, 1, entsdate   )) entsdate1
             , MIN(DECODE(rn, 1, entedate   )) entedate1
             , MIN(DECODE(rn, 1, grade      )) grade1
             , MIN(DECODE(rn, 1, lastgrade  )) lastgrade1
             , MIN(DECODE(rn, 2, school_name)) school_name2
             , MIN(DECODE(rn, 2, major      )) major2
             , MIN(DECODE(rn, 2, entsdate   )) entsdate2
             , MIN(DECODE(rn, 2, entedate   )) entedate2
             , MIN(DECODE(rn, 2, grade      )) grade2
             , MIN(DECODE(rn, 2, lastgrade  )) lastgrade2
          FROM (SELECT seq, school_name, major, entsdate, entedate, grade, lastgrade
                     , ROW_NUMBER() OVER(PARTITION BY seq ORDER BY entsdate) rn
                  FROM t2
                )
         GROUP BY seq
        ) b
 WHERE a.seq = b.seq
;

마농(manon94)님이 2017-07-03 22:28에 작성한 댓글입니다.

감사하다는 글을 적고 싶었는데 일때문에 못들어왔네요.

해결되었습니다.

 

다시한번 감사드립니다.

webma(jikoo27)님이 2017-07-07 13:54에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41442하나의 FK가 두 테이블을 참조하는 경우도 있나요?
조동건
2017-07-06
6175
41441그룹잡아서 소분류를 결과로 내고 싶습니다. [2]
봉달이
2017-07-05
6387
41440구간 순번 및 중복 확인 (내용 수정) [7]
최상민
2017-07-04
7038
41439세로로 된 데이터를 가로로 보여주기 [2]
webma
2017-07-03
6766
41436XML Type 컬럼에 조건 select 문의 [2]
양정표
2017-07-03
6105
41435Insert 작업 속도개선 요청 [2]
마카
2017-06-29
6146
41434마이너스 필드 타입 [1]
아폴론
2017-06-28
6085
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다