Search code examples
sqlselectgroup-bygoogle-bigquerywindow-functions

How to retrieve data from the previous entry/row on a select statement?


How to retrieve data from the previous entry/row on a select statement?

Here is some data: enter image description here

I want to retrieve facID, read_date, and previous date for each row based on facID.

enter image description here

I think using window function can help here like below code:

select factory_id,read_date from (
    select factory_id,read_date,
    rank() over (partition by factory_id order by read_date) as RN
    from Table order by factory_id,read_date
) a 

But not sure how to write a code to retrieve the previous date. Thank you in advance


Solution

  • Use lag:

    select 
      factory_id,
      read_date,
      lag(read_date) over (partition by factory_id order by read_date) as last_read_date
    from Table
    order by factory_id,read_date