2014-03-04 3 views
0

'0 03-03-14', '1 04-03-14'등과 같은 데이터가 포함 된 varchar 열이 있습니다. 그 중 하나를 선택해야합니다.이 경우 '1 04-03-14'.SQL에서 최대 값을 varchar로 선택하십시오.

내 문제는 내가 '1'(최대 값)을 가질 수 있지만 날짜를 원한다면 어떻게해야합니까?

SELECT MAX(TO_NUMBER(SUBSTR(revision, 1, INSTR(revision, ' ')-1))) 
    FROM table 
    WHERE name = 'aname' 
     AND t_name = 'tname' 
    GROUP BY revision 

누구 아이디어가 있습니까 : 지금은

,이 있나요?

감사

+0

당신을 분할하는 것입니다 생각 마지막 날짜 요? '최대'는 어떻게? '2 04-03-13'> '1 04-03-14'? – Alexander

+0

같은 열에 두 개의 다른 데이터를 저장하려고하면 어떤 일이 발생합니까? – Leo

+0

'SUBSTR (REPLACE (개정, '-', ''), 2)'- 이것은 varchar 날짜를 알려줍니다 'TO_NUMBER SUBSTR (REPLACE (revision, '-', ''), 2))'- - 숫자 날짜가 부여됩니다 – Alexander

답변

0

당신이 의미합니까?

select max(revision) 
from table 
where name = 'aname' and t_name = 'tname'; 

개정 번호와 날짜를 하나의 열에 입력하는 것이 이상하게 보입니다. 그게 실제로 당신의 데이터 형식입니까? 그렇지 않은 경우 질문을 실제 데이터 형식으로 수정하십시오.

+0

은 불행히도이와 나는 것 : '1 03-03-14 10 03-03-14 9 03-03-14' 또는 9가 10보다 낮은) – Kaymaz

1

난 당신이 최대 (버전, 최신 버전) 같은 것을 원하는 가정이 시도 : 귀하의 답변에 대해서는

Select * from (
    Select * from (
    SELECT 
     TO_NUMBER(SUBSTR(revision, 1, INSTR(revision, ' ')-1)) as rev 
     , TO_DATE(SUBSTR(revision, 1, INSTR(revision, ' ')+1),'DD-MM-YY') as revDate 
    FROM table 
    WHERE name = 'aname' 
    AND t_name = 'tname' 
) extracted 
    order by extracted.revDate, extracted.rev desc 
) where rownum = 1 
+0

이 뜻을 함께하지만, 성능을 감사) 끔찍한;) – Kaymaz

+0

나는 동의하지만, 그것은 끔찍한 칼럼 데이터 접근법이다;) 나는이 칼럼을 나눌 수 있다는 것을 몰랐다. –

0

, 내가 최선의 해결책은 두 부분 :

관련 문제