我需要在比较两列后获取特定记录。 让我解释一下。
Serial_number(VARCHAR2) Process_date(DATE) Process_Time(TIME)
----------------------------------------------------------------------
1 2010-12-01 11:45:05
1 2010-12-01 12:45:05
1 2010-12-01 14:45:05
2 2010-10-01 10:45:05
2 2010-11-01 09:45:05
3 2009-12-01 11:45:05
我想要如下结果: -
Serial_number(VARCHAR2) Process_date(DATE) Process_Time(TIME)
-----------------------------------------------------------------------
1 2010-12-01 14:45:05
2 2010-11-01 09:45:05
3 2009-12-01 11:45:05
如果有多行相同的Serial_number,我们只需要获取那些具有最新Process_date的行。如果Process_date相同则应该获取具有最新Process_Time的行(此列的数据类型为TIME)。
请帮我在DB2数据库中为此编写查询。
答案 0 :(得分:0)
使用row_number()
OLAP function在以下情况下可能会有所帮助:
with ranked_rows as (
select row_number() over (
partition by serial_number
order by process_date asc process_time desc
) rank,
serial_number,
process_date,
process_time
from table
)
select serial_number,
process_date,
process_time
from ranked_rows
where rank = 1