Oracle 查询以显示每行中的状态更改与先前状态

Oracle query to show change of status in each row with previous status

我有一个 table 包含以下行

需要编写一个 oracle sql 查询以获得输出为:

P.S: 我正在使用 Oracle 9i。让我知道是否可以仅使用 oracle 9i sql.

您可以使用 lag():

select proj_name, prev_status || ' to ' || status
from (select t.*, lag(status) over (partition by proj_name order by date) as prev_status
      from t
     ) t
where prev_status is not null;