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