如何使用开始日期和结束日期从一天扩展的SQL表中输出行?

use*_*933 4 sql t-sql sql-server date

我正在使用SQL Server 2012,我有一个名为的表StayInfo.

它具有以下结构(提取):

Name    ArrDate        DepDate       ID
A       2016-03-29     2016-04-02    100
B       2016-05-10     2016-05-12    250
Run Code Online (Sandbox Code Playgroud)

我想从T-SQL查询输出以下内容:

Name    Date          ID
A       2016-03-29   100
A       2016-03-30   100 
A       2016-03-31   100
A       2016-04-01   100
A       2016-04-03   100
B       2016-05-10   250
B       2016-05-11   250
B       2016-05-12   250
Run Code Online (Sandbox Code Playgroud)

我面临的主要困难是每天执行拆分所需的SQL代码.

Gor*_*off 6

您可以使用递归CTE或数字表:

with cte as (
      select Name, ArrDate, DepDate, ID
      from t
      union all
      select Name, dateadd(day, 1, ArrDate), DepDate, ID
      from cte
      where ArrDate < DepDate
     )
select Name, ArrDate, ID
from cte;
Run Code Online (Sandbox Code Playgroud)

如果跨度超过100天,则可以设置最大递归选项.