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代码.
您可以使用递归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天,则可以设置最大递归选项.