DB2中的多个查询组

时间:2014-03-26 11:14:16

标签: sql db2

我需要在比较两列后获取特定记录。 让我解释一下。

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数据库中为此编写查询。

1 个答案:

答案 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