2013-08-06 5 views
0

을 포기하지 않을 나는 타임 스탬프를 기반으로 최신 오류 MSG를 표시하는 간단한 코드를 가지고 :최대 타임 스탬프가 올바른 결과

SELECT 
      line_item || ': ' || error_msg as RejectionMsg 
      FROM reqs 
      WHERE reqs_number = 'XXXXXXX' 
      and rqj_timestamp = (select max(rqj_timestamp) from reqs 
      WHERE reqs_number = 'XXXXXX') 

내 데이터가 무엇인가 :

rqj_timestamp   line_item Error_msg 
08-MAY-2009 14:00:04 8928 INVALID (RC4C) E 
08-MAY-2009 14:00:04 8929 INVALID (R4CO) EY0 
05-AUG-2013 00:13:42 11760 OO_USR_1 - NO_DATA_FOUND:No Data found for REQUEST 
05-AUG-2013 00:13:42 11761 OO_USR_1 - NO_DATA_FOUND:No Data found for REQUEST 
05-AUG-2013 00:13:42 11762 OO_USR_1 - NO_DATA_FOUND:No Data found for REQUEST 
05-AUG-2013 00:14:59 11763 OO_USR_1 - NO_DATA_FOUND:No Data found for REQUEST 
06-AUG-2013 06:55:59 11807 OO_45_ERROR_REGION_DERIV 
06-AUG-2013 06:55:59 11808 OO_45_ERROR_REGION_DERIV 
06-AUG-2013 06:55:59 11809 OO_45_ERROR_REGION_DERIV 

내 쿼리는 나에게 출력을주고있다 08-MAY-2009 14:00:04 타임 스탬프 대신 06-AUG-2013 06:55:59 타임 스탬프.

3: INVALID (RC4C) E               
3: INVALID (R4CO) EY0      

내가 08 월 2009 14시 0분 4초 행을 제거하면 내가 ...이에서 잘못된 것? 또는 어떻게 내 쿼리를 개선 할 수 있어요 어떤 생각, 그것은 완벽하게 잘 작동합니다.

미리 도움을 청하십시오.

답변

0

귀하의 타임 스탬프가 날짜 또는 이와 유사한 데이터 형식이 아니라 nvarchar2와 같은 문자 데이터 형식입니다. 적절한 데이터 형식으로 테이블을 변경하십시오.

작업 미만 깨끗한 솔루션은 열이 외부 cast에 가지고있는 문자 데이터 형식을 사용 등 국가 언어 설정에 따라 수

cast((select max(cast(rqj_timestamp as date)) from reqs) as nvarchar2) 

같은 것을 사용하는 것입니다. (테스트되지 않은) 같은

0

시도 뭔가 :

select * 
from (
    select r.*, 
    row_number() over (partition by reqs_number order by rqj_timestamp desc nulls last) rnum 
    from reqs r 
    where reqs_number = 'XXXXXXX' 
) 
where rnum = 1; 

또한, 가정은 "rqj_timestamp는"실제로 타임 스탬프 (또는 적어도 일)입니다.

0

데이터 유형을 확인해 주셔서 감사합니다. 밖으로 돌려 보내십시오. varchar가되었고, to_date(rqj_timestamp,'DD-MON-YYYY HH24:MI:SS')을 추가했습니다.

관련 문제