如何计算开始日期和结束日期并从下一个开始日期开始每一行

How to calculate start and enddate and start every new row with the next start date

我正在使用这个 sql 来计算开始日期和结束日期:

WITH RankedProcess (ProcessOrder, ProcessDate, Seq) AS
(
  SELECT ProcessOrder, ProcessDate, ROW_NUMBER() OVER(ORDER BY ProcessDate) AS Seq
  From #Temp
)
SELECT  P1.ProcessOrder, P1.ProcessDate AS ProcessBegin, P2.ProcessDate AS ProcessEnd , P1.Seq , P2.Seq
FROM RankedProcess AS P1
  LEFT OUTER JOIN RankedProcess AS P2
    ON P1.Seq = P2.Seq -1

输出如下所示:

但我也希望它看起来像这样:

不应该存在的不同行(红色):

举个例子:当第一行有

04.01.2016 - 11.01.2016

下一行应以

开头

18.01.2016 - 25.01.2016

下一行应该有 enddate 作为 startdate

既然我看不出这在逻辑上不正确的任何原因,您可以简单地删除每个偶数行:

WITH RankedProcess (ProcessOrder, ProcessDate, Seq) AS
(
  SELECT ProcessOrder, ProcessDate, ROW_NUMBER() OVER(ORDER BY ProcessDate) AS Seq
  From #Temp
)
SELECT  P1.ProcessOrder, P1.ProcessDate AS ProcessBegin, P2.ProcessDate AS ProcessEnd , P1.Seq , P2.Seq
FROM RankedProcess AS P1
  LEFT OUTER JOIN RankedProcess AS P2
    ON P1.Seq = P2.Seq -1
WHERE P1.Seq % 2 = 1