我需要在数据中找到“事务”,并为每个事务生成序列号。
每个事务都定义为check_in =0,表示结帐;check_in =1,表示作为一个事务签入-中间可以有"n“个事务,有些事务的check_in可以为null或check_in =0
对于同一事务,一个事务块的序号应该相同。我有Customer_ID,Check_in和Date的数据。需要生成序号
Sequence No Customer_ID Check_in Date
1 3252538 0 11/14/15 03:20 AM
1 3252538 0 11/14/15 07:37 PM
1 3252538 1 11/15/15 07:27 PM
2 3252538 0 11/17/15 12:34 AM
2 3252538 1 01/27/16 07:46 AM
3 3252538 0 02/01/16 09:09 PM
3 3252538 NULL 02/05/16 08:56 PM
3 3252538 1 02/05/16 11:24 PM
4 3252538 0 02/08/16 07:19 PM
4 3252538 0 02/13/16 02:16 AM
4 3252538 1 02/13/16 10:49 PM
5 3252538 0 02/16/16 06:07 PM
5 3252538 1 02/19/16 03:01 AM在sql中如何做到这一点呢?
发布于 2017-03-20 09:55:09
有意思的。"1“结束事务。它前面的所有零都定义了事务。您可以通过对1进行逆和来识别组:
select t.*,
sum(check_in) over (partition by customer_id order by date desc) as grp
from transactions t;不幸的是,这把事情放在了相反的顺序。所以:
select t.*, dense_rank() over (order by grp) as sequence
from (select t.*,
sum(check_in) over (partition by customer_id order by date desc) as grp
from transactions t
) t;https://stackoverflow.com/questions/42894667
复制相似问题