Monday, April 28, 2014

Oracle Rownum selection using RANK BY AKA resetting ROWNum based on column(s) data change.


How to generate a row number that resets with a given column1 and column2.

So you can do a select:

RANK() OVER (PARTITION BY COLUMN1, COLUMN2 ORDER BY COLUMN1, COLUMN2 desc, COLUMN3)
from blah blah blah
where
get rid of any data you don't want.

So an example in Costpoint would be:
select
empl_id, ORG_ID,
RANK() OVER (PARTITION BY EMPL_ID, ORG_ID ORDER BY EMPL_ID,  EFFECT_DT, ORG_ID) as rownumber,
a.*
from empl_lab_info a;

If you want to see when someone had salary info and history changes group by assigned org with a rownum attached