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 41704 게시물 읽기
No. 41704
구분자 Data를 행으로 변경할려고 합니다.
작성자
이희곤
작성일
2019-04-02 10:53ⓒ
2019-04-02 11:10ⓜ
조회수
3,510

구분자 Comlumn을 행으로 변경할려고 하는데요. 

무엇을 잘못한 것인지 행이 무한 증식되네요 ㅠㅠ

 

 

 

with t as

(

select '698' WAFER_ID, '01$02$03$04$05$06$07$08$09$10$11$12$13$14$15$16$17$18$19$20$21$22$23$24$25$' SLS_NO FROM DUAL

UNION SELECT '829', '01$02$03$04$05$06$07$08$09$10$11$12$13$14$15$16$17$18$19$20$21$22$23$24$25$' SLS_NO FROM DUAL

)

                                   SELECT WAFER_ID, SUBSTR(SLS_NO, 1 + (3 * (LEVEL - 1)), 2) SLS_NO

                                     FROM (SELECT * FROM T)

                                  CONNECT BY LEVEL <= LENGTH(SLS_NO) - LENGTH(REPLACE(SLS_NO, '$'))

 아래 처럼 만들고 싶습니다.

 

WAFER_ID SLS_NO
698 01
698 02
698 03
698 04
698 05
698 06
698 07
698 08
698 09
698 10
698 11
698 12
698 13
698 14
698 15
698 16
698 17
698 18
698 19
698 20
698 21
698 22
698 23
698 24
698 25
829 01
829 02
829 03
829 04
829 05
829 06
829 07
829 08
829 09
829 10
829 11
829 12
829 13
829 14
829 15
829 16
829 17
829 18
829 19
829 20
829 21
829 22
829 23
829 24
829 25

 

도와주세요.ㅠㅠ 

 

 

 

감사합니다. 

 

 

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

CONNECT BY LEVEL < n 방식의 행복제 방법은
  - dual 과 같이 1건 집합에 적용하는 방식입니다.
  - 여러건의 자료에 이 방식을 직접 적용하면 큰일(?)납니다.
  - http://gurubee.net/article/55635
분리할 개수가 25개 고정이라면?
  - (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 25) 와 조인하는 방식으로 하세요.
  - Where 절도 필요 없구요.
가변 개수라고 한다면?
  - 숫자를 최대 가능치로 늘려주세요.
  - (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 99) 와 조인하세요.
  - Where 절도 넣으시구요.


WITH t AS
(
SELECT  698 wafer_id, '01$02$03$04$05$06$07$08$09$10$11$12$13$14$15$16$17$18$19$20$21$22$23$24$25$' sls_no FROM dual
UNION ALL SELECT 829, '01$02$03$04$05$06$07$08$09$10$11$12$13$14$15$16$17$18$19$20$21$22$23$24$25$' sls_no FROM dual
)

SELECT wafer_id
     , lv
     , SUBSTR(sls_no, (lv-1)*3 + 1, 2) sls_no
  FROM t
     , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 25)
-- WHERE lv <= LENGTH(sls_no) - LENGTH(REPLACE(sls_no, '$'))
 ORDER BY wafer_id, lv
;

 

마농(manon94)님이 2019-04-02 13:29에 작성한 댓글입니다.
이 댓글은 2019-04-02 13:32에 마지막으로 수정되었습니다.

네 마농님 감사합니다. ㅠㅠ

적용했었습니다.ㅠㅠ 큰일 났었구요. Data Copy 하는 방법으로 변경하였습니다. 

 

항상 잘 보고 많이 배우고 갑니다.

감사합니다. ^^

곤과장님이 2019-04-02 21:19에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
41707TYPE OBJECT 컬렉션의 변수 갯수 [2]
haka
2019-04-10
3329
41706DB는 오라클 비주얼툴은 dBeaver/Flyspeed입니다. [1]
신승익
2019-04-03
4063
41705오라클 소유자명 입력 없이 그냥 검색하고 싶은데 어떻게할까요? [5]
오라클어려워ㅠ
2019-04-02
3262
41704구분자 Data를 행으로 변경할려고 합니다. [2]
이희곤
2019-04-02
3510
41703락(Lock)이 여러개일 경우 Kill 방법 문의드립니다. [2]
서준용
2019-03-28
3582
41702출퇴근 쿼리 해결이 잘안되어서 글올려 봅니다. [6]
정준민
2019-03-28
3146
41701index 생성 문의
마루아라
2019-03-22
2670
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다