我从一张看上去类似于此的表格开始:
Name | StartDate | EndDate
------------------------------------
Bob | 5/1/2017 | 5/3/2017
Jeff | 6/1/2017 | 6/1/2017
Bob | 7/8/2017 | 7/10/2017我希望这样的结局:
Name | Date
------------------------------------
Bob | 5/1/2017
Bob | 5/2/2017
Bob | 5/3/2017
Jeff | 6/1/2017
Bob | 7/8/2017
Bob | 7/9/2017
Bob | 7/10/2017发布于 2017-12-19 23:12:41
一个简单的方法是递归CTE:
with cte as (
select name, StartDate, EndDate
from t
union all
select name, dateadd(day, 1, StartDate), EndDate
from cte
where StartDate < EndDate
)
select name, StartDate as dte
from cte;正如所写的,这工作了大约100天。如果需要更多信息,只需将option (maxrecursion 0)添加到查询的末尾即可。
https://stackoverflow.com/questions/47896460
复制相似问题