SQL: DB2 Максимальное и минимальное значение даты в 3 столбцах (день, месяц, год)

Я работаю над SQL DB2, я хотел бы получить поле с максимальным значением даты, но дата в трех столбцах (день, месяц, год).

Можете ли вы помочь мне с?

Большое спасибо.

3 ответа

select * from yourtable
order by colyear desc, colmonth desc, colday desc
fetch first rwos only

Вы можете сделать что-то вроде ниже. Но вам нужно изменить ниже запрос с форматом, который вы используете в формате день, месяц, год.

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 )

Попробуйте этот код, пожалуйста:

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: Если у вас есть поле с номером контракта, вам нужно использовать разделение по оператору в over()

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
Другие вопросы по тегам