오라클 업데이트 쿼리 질문드립니다.

오라클 업데이트 쿼리 질문드립니다.

작성일 2014.03.17댓글 2건
    게시물 수정 , 삭제는 로그인 필요

 안녕하세요 오라클 업데이트 쿼리 질문드려요~

특정 테이블의 일련번호 컬럼을 업데이트 하려고 하는데요

예를들면 테이블A의 컬럼이

no1 | no2 | date        | model
1     | 001 | 20130101 | A
1     | 002 | 20130101 | A
1     | 1    | 20130102 | A
2     | 001 | 20130201 | B
2     | 002 | 20130201 | B
2     | 1 | 20130201 | B
2     | 2 | 20130201 | C
3     | 001 | 20130201 | B
3     | 1 | 20130201 | C


이런식으로 키가 두개이고 1번키가 no1, 2번키가 no2 이런식으로
no1이 1이고 no2가 001~005까지 있어야 하는데 그중에 잘못등록된 번호가 1 이나 2처럼 세자리숫자가
아닌데이터가 있습니다. 그래서 몇천건이 되는 데이터를 한번에 업데이트 하려고 하는데
001, 002, 003, 004, 5 이런식으로 자릿수만 005로 바꾸면 되는 데이터도 있고
001, 002, 1, 2, 이런식으로 자릿수를 늘리면 001이 2개 되고 002가 2개 되어서 중복이 되기때문에
업데이트가 힘드네요

랭크함수를 써서 아예 번호를 재부여 하려고 하는데

UPDATE table1 SET (no2) = (
SELECT LPAD(RANK () OVER (PARTITION BY no1 ORDER BY 컬럼1, 컬럼2, TO_CHAR(ROWNUM)),3,'0')
 FROM table1)
WHERE no1 IN ( '1','2','3')

이렇게 하면 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다.

라고 안됩니다.

이유는 한건당 1개씩 업데이트가 되어야는데 한건에 001,002,003 등 여러개가 나와서 그렇겠죠?

그럼 001만 나오도록 해야하는데 어떻게 해야되는지를 모르겠네요.................ㅠ

질문이 이해하기 힘들죠? 저도 질문을 올리다보니 횡설수설이 되어버렸네요..

어쨌든 위에 있는 테이블의 값이

no1 | no2 | date        | model
1     | 001 | 20130101 | A
1     | 002 | 20130101 | A
1     | 003   | 20130102 | A
2     | 001 | 20130201 | B
2     | 002 | 20130201 | B
2     | 003 | 20130201 | B
2     | 004 | 20130201 | C
3     | 001 | 20130201 | B
3     | 002 | 20130201 | C

이런식으로 바껴야되요~ no1은 몇천건있고 no1에 따라서 no2의 값은 적게는 한두개 많게는 몇십개씩
있구요~ 

오라클 쿼리 잘아시는 분께서는 답변 부탁드려요~



#오라클 업데이트 #오라클 업데이트 조인 #오라클 업데이트 여러개 #오라클 업데이트 쿼리 #오라클 업데이트 서브쿼리 #오라클 업데이트 셀렉트 #오라클 업데이트 힌트 #오라클 업데이트 속도 #오라클 업데이트 롤백 #오라클 업데이트 select

profile_image 익명 작성일 -

 참고만 하셔요..

update quest B set no2=

(

   with X as 

   (

      select A.no1, A.no2, ( to_char( (rank() over (partition by A.no1 order by A.no1, A.no2)),'000') )as ranking 

      from  quest A 

   ) 

select ranking from X where X.no1=B.no1 and  X.no2 =B.no2

);

profile_image 익명 작성일 -

 안녕하세요.

간단히 아래처럼 하시면 됩니다.

to_char(컬럼,'000') 을 사용하시면 됩니다. 아래는 예제

 

with x as(
select '001' a from dual
union all
select '015' a from dual
union all
select '1' a from dual
union all
select '3' a from dual
union all
select '103' a from dual
union all
select '990' a from dual
union all
select '-1' a from dual
union all
select '1.1' a from dual
)select to_char(a,'000') col1 from x

 

 

--결과--

 

COL1

------
 001
 015
 001
 003
 103
 990
-001
 001

 


with x as(
select '001' a from dual
union all
select '015' a from dual
union all
select '1' a from dual
union all
select '3' a from dual
union all
select '103' a from dual
union all
select '990' a from dual
union all
select '-1' a from dual
union all
select '1.1' a from dual
)select to_char(a,'0000') col1 from x


--결과--

 

COL1

-----
 0001
 0015
 0001
 0003
 0103
 0990
-0001
 0001

오라클 SQL 쿼리 질문이요

... 오라클 sql 쿼리 질문입니다. A 테이블에 DATE... 동일하게 업데이트를 하려합니다 제가 시도해본... 이 소스가 맞는지 질의드립니다. 감사합니다....

오라클 쿼리 질문드립니다ㅜㅜ

... 이런식으로 쿼리내에서 치환해주려고하는데요... 아래는 예시 쿼리입니다. "column1"과 "column2"는... // 위 쿼리를 실행하면, "column1"과 "column2"의 값이...

Oracle(오라클) 쿼리 질문

오라클 쿼리 질문드립니다. ID JOIN_ID(조인컬럼) 1 2 2 1,3,4 3 2 4 2 5 5 6 7,8,9 7 6,8 8 6,7 9 6 위와 같이 ID, JOIN_ID 컬럼에 데이터가 존재할경우 ID: 1,2,3,4 /5...

오라클 쿼리 질문드립니다.

오라클에서 쿼리로 해결하면 간단하겠다 싶어서 생각중에 가능한지 질문드립니다. 테이블내에 유효일자... 자동업데이트 되는게 목적입니다. 쿼리의 달인분들...

오라클 쿼리 질문드립니다.

... [경유순서]가 가장 높은 로우데이터에서 [목적지]를 추출해 최종목적지로 뽑아내고 싶습니다. 적절한 쿼리를 알려주세요 꽤 생각해봤는데, 도통 생각이 나지 않습니다....

오라클 쿼리 질문드립니다.

안녕하세요 오라클 쿼리에 대해서 질문좀 드리겠습니다. db에 데이터는 요일마다 들어있습니다 중간에 빠진 요일도 있습니다. 아래 와 같은데요...

오라클 쿼리 질문드립니다.

... 답변부탁드립니다. 세로로 출력되는 것을 가로로 출력되는 하시려고... 쿼리를 작성해 볼까 했는데 오라클이 설치되어 있지 않아서 참고하실 URL 알려 드릴게요. URL...