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 39883 게시물 읽기
No. 39883
쿼리 질문 드리겠습니다.
작성자
내마음벌집
작성일
2012-12-07 22:24
조회수
5,619

안녕하십니까.. 다음과 같은 데이터가 있습니다.

 

d_SEQ     d_name       K_NAME      T_FROM      T_NM

-----------------------------------------------------------------------------------------------------------

1               AAA              가길동         2012-01-01       A

1               AAA              나길동         2012-02-01       A

1               AAA              다길동         2012-03-01       A

2               BBB              라길동         2012-03-01       B

2               BBB              마길동         2012-03-01       A

3               CCC             바길동          2012-03-01      C

 

 

위와같은 집합을 아래의 집합 형태로 나타내고 싶습니다.

 

d_name       A의 K_NAME                    A의 T_FROM                  A 의 K_NAME                A의 T_FROM                 B의 K_NAME                  B의 T_FROM                  C의 K_NAME     C의 T_FROM     

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

AAA           가길동                                   2012-01-01                     나길동                               2012-02-01                  

AAA           다길동                                    2012-03-01                     

BBB                                                                                                                                                                                  라길동                        2012-03-01       

CCC                                                                                                                                                                                                                                                               바길동                    2012-03-01

 

컬럼 헤더부는 T_NM이 할당되고 T_NM이 A 이면 컬럼 두개 할당, 나머지는 한개 할당... 뭐 이런 식입니다.

쿼리문으로 이게 가능 할까요?                 

 

고수님들의 조언 부탁드립니다.   

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

WITH t AS
(
SELECT 1 d_seq, 'AAA' d_name, '가길동' k_name, '2012-01-01' t_from, 'A' t_nm FROM dual
UNION ALL SELECT 1, 'AAA', '나길동', '2012-02-01', 'A' FROM dual
UNION ALL SELECT 1, 'AAA', '다길동', '2012-03-01', 'A' FROM dual
UNION ALL SELECT 2, 'BBB', '라길동', '2012-03-01', 'B' FROM dual
UNION ALL SELECT 2, 'BBB', '마길동', '2012-03-01', 'A' FROM dual
UNION ALL SELECT 3, 'CCC', '바길동', '2012-03-01', 'C' FROM dual
)
SELECT d_seq, d_name
     , MIN(DECODE(t_nm||MOD(rn, 2), 'A1', k_name)) name_a1
     , MIN(DECODE(t_nm||MOD(rn, 2), 'A1', t_from)) from_a1
     , MIN(DECODE(t_nm||MOD(rn, 2), 'A0', k_name)) name_a2
     , MIN(DECODE(t_nm||MOD(rn, 2), 'A0', t_from)) from_a2
     , MIN(DECODE(t_nm, 'B', k_name)) k_name_b
     , MIN(DECODE(t_nm, 'B', t_from)) t_from_b
     , MIN(DECODE(t_nm, 'C', k_name)) k_name_c
     , MIN(DECODE(t_nm, 'C', t_from)) t_from_c
  FROM (SELECT d_seq, d_name, k_name, t_from, t_nm
             , ROW_NUMBER() OVER(
               PARTITION BY d_seq, t_nm ORDER BY t_from, k_name) rn
          FROM t
        )
 GROUP BY d_seq, d_name
     , DECODE(t_nm, 'A', CEIL(rn/2), rn)
 ORDER BY d_seq, d_name, MIN(rn)
;

마농(manon94)님이 2012-12-08 09:48에 작성한 댓글입니다.

마농님 정말 감사합니다.

내마음벌집님이 2012-12-09 13:48에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
39893JOBS사용 관련하여 세션종료 문제
이민욱
2012-12-11
5290
39888고수님들 Insert Join 좀 도와주세요!!!
첼시리우
2012-12-10
5192
39884한 ROW의 결과를 여러 ROW로 나누기 [1]
질문
2012-12-08
6805
39883쿼리 질문 드리겠습니다. [2]
내마음벌집
2012-12-07
5619
39882이렇게 group by 가능할까요? [1]
사과
2012-12-07
5228
39881그리고 현재까지 풀지 못한 문제.(역시 restore 부분입니다 ^^)
삼각받침
2012-12-07
5078
39880Incremental backup에 관한 간단한 질문 ^^
삼각받침
2012-12-07
5088
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다