我使用的是 SQL Server 2012
,并且有一个名为 StayInfo
的表。
它具有以下结构(摘录):
Name ArrDate DepDate ID
A 2016-03-29 2016-04-02 100
B 2016-05-10 2016-05-12 250
我想要 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
我面临的主要困难是每天执行拆分所需的 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;
如果跨度超过 100 天,您可以设置最大递归选项。
关于sql - 如何使用开始日期和结束日期从 SQL 表中输出按天扩展的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46300568/