小编STL*_*Dev的帖子

查询以从仅包含开始日期的列表计算开始和结束日期

我有以下形式的数据需要合并,以便我从两行输入数据创建一行,其中第二列是下一行减去一天的值。

我一直在努力想出一种方法来做到这一点,但没有走得太远。我希望这张图能解释这个问题:

表结构

CREATE TABLE Process(
    ProcessOrder int NOT NULL IDENTITY (1, 1),
    ProcessDate date NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

询问

SELECT ProcessOrder, ProcessDate From Process ORDER BY ProcessOrder;
Run Code Online (Sandbox Code Playgroud)

数据

ProcessOrder  ProcessDate
------------  -----------
208           2016-01-04
209           2016-01-11
210           2016-01-18
211           2016-01-25
212           2016-02-01
213           2016-02-08
Run Code Online (Sandbox Code Playgroud)

我需要将上述数据变成以下形状(注意,从后续记录来看,ProcessEnd 比 ProcessBegin 少一天):

ProcessOrder  ProcessBegin  ProcessEnd
------------  ------------  ----------
208           2016-01-04    2016-01-10
209           2016-01-11    2016-01-17
210           2016-01-18    2016-01-24
211           2016-01-25    2016-01-31
212           2016-02-01    2016-02-07
213           2016-02-08    *NULL*
Run Code Online (Sandbox Code Playgroud)

编辑

我保证 ProcessOrder 列中的值是连续的,没有缺失值。

sql-server t-sql sql-server-2008-r2

1
推荐指数
1
解决办法
2万
查看次数

标签 统计

sql-server ×1

sql-server-2008-r2 ×1

t-sql ×1