在Oracle中提取先前的值和当前值

时间:2013-09-25 18:29:36

标签: sql oracle

我要求表的输入/输出如下所示。 对于相同的Column1值,我有不同的Column3值。对于Column2Column1中的一组特定值,Column2是唯一的。我需要导出输出 对于每个Column1值,它应该拉“最后”和“最后但一个”记录。

输入


Column1 Column2     Column3
ABC     1           Hary
ABC     2           Mark
ABC     3           David

BCD     1           Marc
BCD     2           Shaw
BCD     3           Hary
BCD     4           Hary

XYZ     1           Lousie
XYZ     2           Shelly
XYZ     3           Marie
XYZ     4           Hary

输出


Column1     Previous    Latest
ABC         Mark        David
BCD         Hary        Hary
XYZ         Marie       Hary

1 个答案:

答案 0 :(得分:2)

这是产生所需输出的一种方法:

select column1
     , max(prev)   keep (dense_rank last order by column2) as previous
     , max(latest) keep (dense_rank last order by column2) as latest
  from (select column1
             , column2
             , column3 as latest
             , lag(column3) over(partition by column1
                                     order by column2) as prev
          from table_name
        )
group by column1

结果:

COLUMN1 PREVIOUS LATEST
------- -------- ------
ABC     Mark     David  
BCD     Hary     Hary   
XYZ     Marie    Hary

sqlfiddle