postgresql按日期获取具有不同列值的记录

ff29svar  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(296)

表用户

(user_id, vehical_type, created_date)
 1        10            2020-06-01
 2        11            2019-09-09
 1        9             2020-06-02
 1        2             2020-02-01
 2        10            2019-09-06
 2         9            2019-09-11

Result
(user_id, vehical_type, created_date)
 1        10            2020-06-01
 1         9            2020-06-02

如果vehicle\u type 10后面跟着vehicle\u type 2,则查询获取vehicle\u type 10,9的特定用户记录
在上面的结果中,您不应该看到用户标识2,因为其车辆类型11(创建时间:2019-09-09)存在于其车辆类型10(2019-09-06)和9(2019-09-11)之间

8yparm6h

8yparm6h1#

好像你想要 lead() :

select *
from (
    select 
        t.*, 
        lead(vehical_type) over(partition by user_id order by created_date) lead_vehical_type
    from mytable t
) t
where vehical_type in (9, 10) and lead_vehical_type = 2

这带来了 vehical_type 9或10,下一个是谁 vehical_type 同样的道理 user_id 是2。

相关问题