如何只选择Oracle中的值更改?

Mor*_*fee 2 sql oracle select

我有一张表格,其中包含根据期间的值

我只选择更改

例:

表格栏:

Member
Status
Period
Run Code Online (Sandbox Code Playgroud)

表格数据:

会员身份期限
----------------------
     斧1
     斧2
     AY 3
     AY 4
     BX 1
     BX 2
     BX 3
     BZ 4

我想查询返回这样的东西

   Member A Status change X to Y Period 2 to 3
   Member B Status change X to Z Period 3 to 4
Run Code Online (Sandbox Code Playgroud)

我遇到了问题,因为Oracle不允许在子查询中进行排序

任何查询的想法?

a_h*_*ame 5

您可以为此使用窗口函数:

select *
from (
  select member,
         status, 
         period,
         lag(status) over (partition by member order by period) as prev_status, 
         lag(period) over (partition by member order by period) as prev_period
  from the_table
) 
where status <> prev_status
Run Code Online (Sandbox Code Playgroud)