rownumber,rank 조건 주기 case when 써서 etc_ctn에 D- 포함하는 것과 안 포함하는 것 구분해서 12345 순서 1

by family1560 [2024.01.23 10:16:56]


select to_char(m.orignal_YMD, 'yyyymmdd') as orignal_YMD
   ,RANK() OVER (PARTITION BY m.change_ymd ORDER BY m.change_ymd, m.number, m.orignal_YMD, m.ORIGINAL_SNO) AS no  --->이 부분이 순서대로 12345678 인데 ETC_CTN 메모 D- 포함 여부 상관없이
      , m.ORIGINAL_SNO
     , to_char(m.change_ymd, 'yyyymmdd') as change_ymd
     , m.ORIGINAL_SNO
     , m.number                             

from MEAN m
     , AP c
 where 1 = 1
   and m.number = nvl('',m.number)
   and m.orignal_YMD between to_date('20240101', 'yyyymmdd')
                      and to_date('20240201', 'yyyymmdd')
   and c.number = m.number
 order
    by m.orignal_YMD, m.number, m.ORIGINAL_SNO

MEAN 테이블에 있는 ETC_CTN 메모 ---> D- 포함하면 12345  , D- 포함하지 않는 것끼리 12345  해결 하고 싶은 부분

m.ETC_CTN

아래 처럼 하면 왜 안되나요?
MEAN 테이블에 있는 ETC_CTN 메모 ---> D- 포함하면 12345  , D- 포함하지 않는 것끼리 12345  해결 하고 싶은 부분


    ,ROW_NUMBER() OVER (PARTITION BY m.change_ymd, ORDER BY m.change_ymd, m.number, 
                       CASE WHEN m.ETC_CTN LIKE 'D-%' THEN TO_NUMBER(SUBSTR(m.ETC_CTN, 3)) END, 
                       m..ORIGINAL_YMD, m..ORIGINAL_SNO) AS no,

 

 

 

질문: ETC_CTN 메모 ---> D- 포함하면 12345  , D- 포함하지 않는 것끼리 12345 이렇게 가능할까요?  RANK() OVER, ROWNUMBER 써서 순서대로 가능할까요?

 

by 마농 [2024.01.23 10:26:57]
- 변경전 : PARTITION BY m.change_ymd
- 변경후 : PARTITION BY m.change_ymd, INSTR(m.etc_ctn, 'D')
- ORDER BY 절에 m.change_ymd 는 불필요.

 

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