Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于crtieria的SQL序列递增/重置_Sql_Sequence_Vertica - Fatal编程技术网

基于crtieria的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 我正在尝试创建一个序

我试图用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
我正在尝试创建一个序列,当日期差异大于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是我正在使用的数据库。这是您需要使用窗口功能的东西,并在加载数据后应用。