2017-05-09 1 views
-1

SQL DB2에서 작업 중입니다. 날짜의 최대 값을 가진 필드를 검색하고 싶지만 날짜는 세 열 (일, 월, 년).SQL : DB2 3 열 (일, 월, 연도)의 날짜의 최대 및 최소 값

도와주세요.

고마워요.

+0

당신이 무엇을 을 시도

select * from yourtable order by colyear desc, colmonth desc, colday desc fetch first rwos only 
? 열을 연결하여 날짜를 – uSeruSher

+0

문자열을 문자열로 결합한 후 날짜를 합한 다음 결합 된 열의 최대 값을 사용할 수 있습니다. http://stackoverflow.com/questions/4852139/converting-a-string-to-a-date -in-db2 – xQbert

+0

YEAR = (FILE에서 MAX (YEAR)를 선택하십시오.) ==> 그러나 이것은 최대 연도의 날짜 만 리턴합니다. 최대 날짜를 가져 오려고합니다. 나는 숫자 필드 이후에 어떻게 연결시킬 수 있는지 알지 못한다. 더 많은 설명을 주길 바란다. – Fazah

답변

0

하면이 코드를하시기 바랍니다 시도해보십시오

select distinct year, month, day 
from (
    select year, month, day, rank() over(order by year desc, month desc, day desc) as rn 
    from [your table name] 
) t 
where rn = 1 

갱신 1을 : 당신은 계약 번호 일부 필드가있는 경우는, 다음을 통해 파티션을 사용할 필요가 ()

select distinct contract_number, year, month, day 
from (
    select contract_number, year, month, day, rank() over(partition by contract_number order by year desc, month desc, day desc) as rn 
    from [your table name] 
) t 
where rn = 1 
+0

작동하지만 다른 파일과 함께 다른 열을 검색하려고 할 때도 다른 열을 추가 할 때도 작동하지 않습니다. – Fazah

+0

Fazah, 다른 테이블의 열을 추가하려고합니까? 이 구조가 어떻게 보이나요? –

+0

사실 나는 많은 테이블을 사용하고 있으며 많은 조건을 가진 필드를 검색해야합니다. 하나는 최대 날짜이고 다른 하나는 최소 날짜입니다. – Fazah

0

다음과 같이 할 수 있습니다. 그러나 일, 월, 년 형식으로 사용중인 형식으로 쿼리를 변경해야합니다.

select * from urtable where to_date(year||'-'||month||'-'||day,'yyyy-mon-dd') in 
(select max(to_date(year||'-'||month||'-'||day,'yyyy-mon-dd'))) from urtable) 
0
+0

나는 내가 문제를 표시하는 방식으로 분명하지 않은 것 같아요, 내가 당신에게 예제를 줄거야 : 내 테이블 C1에 이런 계약을 많이 가지고 : 일 : 01 개월 : 02 년 : 2017 및 C1 다음과 같은 다른 날짜가 있습니다. Day : 01 month : 01 year : 2017 및 이와 비슷한 다른 계약. 내가해야 할 일은 계약서를 검색하는 것입니다.이 계약의 최대 날짜는 C1 : 01 개월 : 02 년 : 2017이고 동일하거나 다른 contrats이므로 최대 날짜는 C1, 날짜는 C2입니다. 최대 날짜 등등. 나는 당신의 도움을 위해 나는 지금 더 많은 것을 분명히하고 희망을 많이 보내길 바랍니다. - – Fazah