基于crtieria的SQL序列递增/重置
我试图用SQL编写一个查询,但遇到了麻烦 我的结果表如下所示:基于crtieria的SQL序列递增/重置,sql,sequence,vertica,Sql,Sequence,Vertica,我试图用SQL编写一个查询,但遇到了麻烦 我的结果表如下所示: Category Date 1234 15/07/2014 1234 17/07/2014 1234 29/07/2014 1234 31/07/2014 1234 02/08/2014 1234 04/08/2014 1234 06/08/2014 1211 17/07/2014 1211 06/08/2014 1211 08/08/2014 我正在尝试创建一个序
Category Date
1234 15/07/2014
1234 17/07/2014
1234 29/07/2014
1234 31/07/2014
1234 02/08/2014
1234 04/08/2014
1234 06/08/2014
1211 17/07/2014
1211 06/08/2014
1211 08/08/2014
我正在尝试创建一个序列,当日期差异大于2时,该序列将重置,并且对于类别来说是唯一的,如下所示:
Category Date Sequence
1234 15/07/2014 1
1234 17/07/2014 2
1234 29/07/2014 1
1234 31/07/2014 2
1234 02/08/2014 3
1234 04/08/2014 4
1234 06/08/2014 5
1211 17/07/2014 1
1211 06/08/2014 1
1211 08/08/2014 2
这可以使用函数来完成。谢谢你的帮助
SELECT Category,
Date,
RANK()
OVER (
PARTITION BY Category, seq
ORDER BY Date)
FROM (SELECT Category,
Date,
CONDITIONAL_TRUE_EVENT(DATEDIFF(day, prev_Date, Date) > 2)
OVER (
PARTITION BY Category
ORDER BY Date) AS seq
FROM (SELECT *,
LAG(Date, 1)
OVER (
PARTITION BY Category
ORDER BY Date) prev_Date
FROM test) q) q2
ORDER BY Category,
Date;
谢谢marc-Vertica是我正在使用的数据库。这是您需要使用窗口功能的东西,并在加载数据后应用。