我有下表:
user_id | Membership_type | start_Date
1 | 1 | 1
1 | 1 | 2
1 | 2 | 3
1 | 3 | 4
有几个用户,我需要为每个用户找出会员类型何时发生变化以及变化是什么,格式如下(开始日期为日期时间,为了便于理解,将其放在 int 中)
user_id |Membership_change| change_Date
1 | 1 to 2 | 3
1 | 2 to 3 | 4
我试过了
select m1.user_id, concat(m1.Membership_type, ' to ',m2.Membership_type), m2.start_date
from table_membership m1
join table_membership m2
on m1.user_id=m2.user_id and m1.start_date<m2.start_date and m1.membership_type<>m2.membership_type
但这会回来
user_id |Membership_change| change_Date
1 | 1 to 2 | 3
1 | 1 to 2 | 3
1 | 1 to 3 | 4
1 | 2 to 3 | 4
重复的 1 到 2 不是通过分组删除的问题,但我似乎无法想出避免出现 1 到 3 结果的方法。我基本上只需要按时间顺序从一个成员加入到下一个成员
任何想法,将不胜感激!
编辑:有一个想法添加列 m1.start_date 并按 account_id 和 m1.start_date 分组,所以我只会得到每个条目加入的第一行。在加入之前按日期进行预排序,以确保它们都井然有序。会测试。