1

テーブルの入力/出力が以下に示されているという要件があります。同じColumn1値に対して、私は異なるColumn3値を持っています。およびColumn2の特定の値のセットに対して一意です。すべての値について、「最後」と「最後から 2 つ後」のレコードを取得するように、出力を導出する必要があります。Column1Column2Column1

入力


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
4

1 に答える 1

2

目的の出力を生成する 1 つの方法を次に示します。

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

于 2013-09-25T18:55:37.303 に答える