결과가 값이 이상하게 나오는데 원인을 모르겠습니다. ㅠㅠ 0 8 1,928

by Vampirejk [PL/SQL] [2013.07.02 09:24:31]


안녕하세요 ^^

중국에 출장을 와서 완전 파김치네요 ㅋㅋ

아래와 같은 쿼리 인데요 

내부의  쿼리를 실행하면 결과가 나옵니다.

r_numbering     r_cnt   num
1234                   9        1
12345                 9        2
........                    .    . .. 

num  = 1 인 놈을 조건에 넣어었는데 엉뚱하게  r_numbering 12345 이 놈이 나옵니다.;;;;;;;

원인을 모르겠습니다 ㅠㅠ 
 
 SELECT CONCAT(TRIM(r_numbering) , TRIM(TO_CHAR(r_cnt )))

 FROM 
 (
 SELECT R_NUMBERING, R_CNT, ROW_NUMBER() OVER(ORDER BY R_CNT DESC) AS NUM
  FROM IF_RMS_ERP_PART_INPUT_INFO
  WHERE TM_NO = 'EABUHU282789' AND R_CLASS <> '2' --취소가 안된 것.
 )
 WHERE NUM = 1;
by 우리집아찌 [2013.07.02 09:33:19]

r_cnt 값이 중복되는데요 ORDER BY 에 조건을 하나 추가하시는게 어떨까요?

by Vampirejk [2013.07.02 09:35:59]
ORDER BY R_CNT DESC 여기에 조건을 추가하라는 말씀이신가요? R_NUMBERING이 가장 큰 것이라고 조건을 주고 싶으면 어떻게 해야하나요?

by 아발란체 [2013.07.02 09:35:37]
위 데이타셋만 나오는 결과가 이상한데
아래 조회 질의를 보면 나올 여지가 충분합니다.

ROW_NUMBER() OVER()로 인해 r_numbering과 관계 없이
r_cnt를 역순 정렬하여 num 값을 재정의 하기 때문에
1234 값이 들어간 것이 over할 때 1이 되기 위한 기준을 잡아주셔야 할 것 같습니다.

by Vampirejk [2013.07.02 09:36:54]
어떤 식으로 잡아줘야하는지 잘 모르겠습니다.

by 아발란체 [2013.07.02 09:42:40]
그 기준이 R_NUMBERING이 된다면
"OVER(ORDER BY R_CNT DESC)" 부분을 다음과 같이 변경하시면 됩니다.
"OVER(ORDER BY TO_NUMBER(r_numbering) ASC, R_CNT DESC)"

by Vampirejk [2013.07.02 10:01:32]
소중한 답변 감사드립니다. 
잘 해결이 되었습니다. ^^

by 부쉬맨 [2013.07.02 09:50:10]
아발란체님이 말한거처럼하면되겟다잉..
준기상!!

by Vampirejk [2013.07.02 10:01:54]
^^ 잘 해결 되었습니다.

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