显示已更改文件的Oracle SQL查询

uidvcgyl  于 2023-08-03  发布在  Oracle
关注(0)|答案(1)|浏览(96)

Oracle中有一个表,其中存储了有关系统中不同文件更改的一般信息。该表包含文件ID、更改的版本(每个后续字段更改在每个文件ID的新行中向该值添加+1)、用户ID(进行更改的用户)和要更改的字段(在示例中仅“类型”列)。
请帮我写一个sql查询,它将显示在示例中的用户12345之后类型(示例中的type 2和type 3)被更改的文件的文件ID。
也就是说,对当前示例的查询应该显示标识符111111和222222
| 版本号|用户ID|型号| Type |
| --|--|--| ------------ |
| 一个|一二三四五|类型1| type1 |
| 二个|一二三四五|类型1| type1 |
| 三个|54312|类型2|type2|
| 一个|一二三四五|类型1| type1 |
| 二个|54312|类型3|type3|
| 一个|一二三四五|类型1| type1 |

eoxn13cs

eoxn13cs1#

使用分析函数LAG查找以前的用户(按版本排序,按ID分区)

select distinct ID 
from 
(
    select ID, Type,
    lag(UserId) over(partition by id order by version) prevUserId, 
    lag(Type) over(partition by id order by version) prevType      
     from your_table
) s
     where prevUserId = 12345
       and prevType<>Type

字符串

相关问题