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 42011 게시물 읽기
No. 42011
쿼리 질문좀 드리겠습니다.ㅠㅠ
작성자
장선각(airmanx)
작성일
2025-09-15 16:36
조회수
1,667

일차로 쿼리를 실행하여 다음과 같이 데이터를 추출했습니다.

 

구분 코드 명칭
21 A alpha
21 B bravo
21 C charlie
21 D delta
22 A alpha
22 E echo
22 F foxtrot
23 G golf
23 H hotel
23 I india
23 J juliett
24 G golf
25 J juliett
25 K kilo


위의 데이터를 구분값을 기준으로 아래와 같이 가로배열을 하고 싶은데 도저히 모르겠어서 이렇게 문의드립니다.

21 22 23 24 25
alpha alpha golf golf juliett
bravo echo hotel   kilo
charlie foxtrot india    
delta   juliett    

 

 

WITH t (GBN, CD, NM) AS (
    SELECT '21', 'A', 'alpha' UNION ALL
    SELECT '21', 'B', 'bravo' UNION ALL
    SELECT '21', 'C', 'charlie' UNION ALL
    SELECT '21', 'D', 'delta' UNION ALL
    SELECT '22', 'A', 'alpha' UNION ALL
    SELECT '22', 'E', 'echo' UNION ALL
    SELECT '22', 'F', 'foxtrot' UNION ALL
    SELECT '23', 'G', 'golf' UNION ALL
    SELECT '23', 'H', 'hotel' UNION ALL
    SELECT '23', 'I', 'india' UNION ALL
    SELECT '23', 'J', 'juliett' UNION ALL
    SELECT '24', 'G', 'golf' UNION ALL
    SELECT '25', 'J', 'juliett' UNION ALL
    SELECT '25', 'K', 'kilo'
)


도와주시면 감사하겠습니다.

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

오라클이 아닌 듯 한데?

오라클 게시판에 올리셨네요?

DBMS 종류가 뭔가요?

마농(manon94)님이 2025-09-16 09:41에 작성한 댓글입니다.
WITH t AS
(
SELECT '21' gbn, 'A' cd, 'alpha' nm
UNION ALL SELECT '21', 'B', 'bravo'
UNION ALL SELECT '21', 'C', 'charlie'
UNION ALL SELECT '21', 'D', 'delta'
UNION ALL SELECT '22', 'A', 'alpha'
UNION ALL SELECT '22', 'E', 'echo'
UNION ALL SELECT '22', 'F', 'foxtrot'
UNION ALL SELECT '23', 'G', 'golf'
UNION ALL SELECT '23', 'H', 'hotel'
UNION ALL SELECT '23', 'I', 'india'
UNION ALL SELECT '23', 'J', 'juliett'
UNION ALL SELECT '24', 'G', 'golf'
UNION ALL SELECT '25', 'J', 'juliett'
UNION ALL SELECT '25', 'K', 'kilo'
)
SELECT MIN(CASE gbn WHEN '21' THEN nm END) "21"
     , MIN(CASE gbn WHEN '22' THEN nm END) "22"
     , MIN(CASE gbn WHEN '23' THEN nm END) "23"
     , MIN(CASE gbn WHEN '24' THEN nm END) "24"
     , MIN(CASE gbn WHEN '25' THEN nm END) "25"
  FROM (SELECT gbn, nm
             , ROW_NUMBER() OVER(PARTITION BY gbn ORDER BY nm) rn
          FROM t
        ) a
 GROUP BY rn
 ORDER BY rn
;
마농(manon94)님이 2025-09-16 09:55에 작성한 댓글입니다.

마농님 감사합니다.

덕분에 쉽게 처리할 수 있게되었습니다.


사용하는 DB는 Oracle19c입니다.


as-is sql의 길이가 4000 step이 넘어가는 무시무시한 쿼리라서

간랸하게 올린다는게 조금 혼선이 있었던거 같습니다.


항상 감사합니다.

장선각(airmanx)님이 2025-09-16 12:25에 작성한 댓글입니다.
WITH t AS
(
SELECT '21' gbn, 'A' cd, 'alpha' nm   FROM dual
UNION ALL SELECT '21', 'B', 'bravo'   FROM dual
UNION ALL SELECT '21', 'C', 'charlie' FROM dual
UNION ALL SELECT '21', 'D', 'delta'   FROM dual
UNION ALL SELECT '22', 'A', 'alpha'   FROM dual
UNION ALL SELECT '22', 'E', 'echo'    FROM dual
UNION ALL SELECT '22', 'F', 'foxtrot' FROM dual
UNION ALL SELECT '23', 'G', 'golf'    FROM dual
UNION ALL SELECT '23', 'H', 'hotel'   FROM dual
UNION ALL SELECT '23', 'I', 'india'   FROM dual
UNION ALL SELECT '23', 'J', 'juliett' FROM dual
UNION ALL SELECT '24', 'G', 'golf'    FROM dual
UNION ALL SELECT '25', 'J', 'juliett' FROM dual
UNION ALL SELECT '25', 'K', 'kilo'    FROM dual
)
SELECT *
  FROM (SELECT gbn, nm
             , ROW_NUMBER() OVER(PARTITION BY gbn ORDER BY nm) rn
          FROM t
        )
 PIVOT (MIN(nm) FOR gbn IN (21, 22, 23, 24, 25))
 ORDER BY rn
;

 
마농(manon94)님이 2025-09-16 13:09에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
42012Oracle 왜 그리 비쌀까요?
세벌
2026-02-27
435
42011쿼리 질문좀 드리겠습니다.ㅠㅠ [4]
장선각
2025-09-15
1667
42010쿼리 질문 드립니다. [1]
CK
2025-07-31
1703
42009Full scan Filter [1]
ohyouknow
2025-07-25
1695
42006insert 속도 vs update 속도 [1]
워즈
2025-03-13
2371
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2025 DSN, All rights reserved.
작업시간: 0.011초, 이곳 서비스는
	PostgreSQL v18.1로 자료를 관리합니다