쿼리 작성하였는데 문제점 있을까요? 0 5 203

by 정우성 [SQL Query] 최신값 null 처리 [2018.03.12 15:35:12]



첨부파일 참조 

입니당. 

by 우리집아찌 [2018.03.12 15:42:13]

같은 테이블 조회인데. SEQ_NO가 틀린 이유가 무엇인지요?


by 마농 [2018.03.12 15:48:36]

쿼리 작성 의도를 알아야만 쿼리에 문제가 있는지 없는지 정확히 알 수 있습니다.
그러나, 작성의도를 몰라도 문제점이 많이 보입니다.
 - 숫자를 문자연결하여 Max 하는 것도 문제이구요. 고정자리로 만들어 연결해야 함
 - 메인과 서브의 조건이 다른 것은 의도적인건가요?
 - 있으면? 없으면 으로 표현하셨는데? 그 의미가 정확히 뭘까요?
 - 건수가 있는지 없는지? (1 Row : 0 Row)
 - 아니면? 값이 있는지 없는지? (NOT NULL : NULL)
 - 쿼리 작성 의도를 정확하게 알려주세요.


by 정우성 [2018.03.12 17:50:27]

1. 고정자리는 lpad하면 될까요?

2. 같은값 넣어야 되는데 잘못 적었네요. 

3.한 row에 해당 컬럼에 데이터가 있냐 없냐 입니다

4. 1줄이 나와야 되는데 null일 수도 있어서 무조건 Y,N이 나와야 됩니다


by 마농 [2018.03.12 18:06:53]

case 문이 난해하여 이해하기 힘드네요.
case 문이 잘못 작성한게 아닌가 하는 생각도 들구요.
정확한 의미 쉽게 설명해 주세요.


by 마농 [2018.03.12 18:14:43]

제가 이해한 상황입니다.
- 특정 seq_no 의 최신정보(year, seq 기준) 1건에 해당하는 값이
- from_yymm 의 값은 있고, to_yymm 값은 없으면 'Y'
 

SELECT NVL(MAX('Y'), 'N') yn
  FROM (SELECT year, seq, from_yymm, to_yymm
             , ROW_NUMBER() OVER(ORDER BY year DESC, seq DESC) rn
          FROM tb111
         WHERE seq_no = :v_seq_no
        ) a
 WHERE rn = 1
   AND from_yymm IS NOT NULL
   AND to_yymm   IS NULL
;

 

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