首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StartDate和EndDate列转换为一个具有多行的日期列

StartDate和EndDate列转换为一个具有多行的日期列
EN

Stack Overflow用户
提问于 2017-12-19 23:03:15
回答 1查看 198关注 0票数 0

我从一张看上去类似于此的表格开始:

代码语言:javascript
复制
Name    |   StartDate   |   EndDate
------------------------------------
Bob     |   5/1/2017    |   5/3/2017
Jeff    |   6/1/2017    |   6/1/2017  
Bob     |   7/8/2017    |   7/10/2017

我希望这样的结局:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-19 23:12:41

一个简单的方法是递归CTE:

代码语言:javascript
复制
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)添加到查询的末尾即可。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47896460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档