DB: 특정 필드 부터 1식 증가 시켜서 업데이트 하기 0 4 581

by 최성국 [SQL Query] [2018.09.07 15:27:31]


오라클 10g

테이블명:  ITEM

PK_NO   VARCHAR(10)

SORT_NO  NUMBER(4)

NAME      VARCHAR(50)

IN_DATE  DATE

================================

기존에 들어 있는 데이터에서

IN_DATE 가 2018-01-01 부터 PK_NO 숫자가 빠른(적은) 것부터 SORT_NO를 0 부터 1식 증가 해서 UPDATE 하고 싶습니다.

========= 변경 전  =====================

000010 |     0    | 망치    | 2017-01-25

000011 |     1    | 못        | 2017-02-13

000012 |  NULL  | 니퍼     | 2018-01-01

000013 |    2    | 드라이버 | 2018-04-05

000014|       5  |나사       | 2018-04-05

=========== 변경 후 =================

000010 |     0    | 망치    | 2017-01-25

000011 |     1    | 못        | 2017-02-13

000012 |     0    | 니퍼     | 2018-01-01

000013 |     1    | 드라이버 | 2018-04-05

000014|      2    | 나사       | 2018-04-05

by 우리집아찌 [2018.09.07 15:29:55]

년도별로 그룹핑해서 순번을 넣어주면되나요?

SQL-SERVER 이면 버젼을 말씀해주세요.


by 최성국 [2018.09.07 15:57:57]

오라클 10g

연도 별로 그룹핑 할필요 없구요. 그냥 2018-01-01 이후 부터 순번 넣으면 되구요.

2017-12-31 이전 것은 안 건드리시면 됩니다.

참고로 저는 오렌지 씁니다. 오렌지도 왕초보 입니다. ㅠ.ㅠ


by 우리집아찌 [2018.09.07 16:55:40]
MERGE INTO T A
USING ( SELECT SEQ , ROW_NUMBER() OVER(ORDER BY SEQ ) - 1 RN FROM T WHERE DT >= TO_DATE('2018-01-01','YYYY-MM-DD') )  B
   ON ( A.SEQ = B.SEQ ) 
WHEN MATCHED THEN
    UPDATE SET
        A.RN = B.RN ;
        

 


by 창조의날개 [2018.09.07 17:31:45]
UPDATE ITEM AA
SET SORT_NO 
  = (SELECT RN
       FROM (SELECT PK_NO 
                  , ROW_NUMBER() OVER(ORDER BY PK_NO) RN
               FROM ITEM
              WHERE IN_DATE >= TO_DATE('20180101','YYYYMMDD'))
      WHERE PK_NO = AA.PK_NO)
WHERE IN_DATE >= TO_DATE('20180101','YYYYMMDD')
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입