表1:
ID|StartDateID|EndDateID
468|20200101|20200104
534|20200103|20200104
123|20200106|20200108
所需输出:
ID|StartDateID|EndDateID
468|20200101|20200104
468|20200102|20200104
468|20200103|20200104
468|20200104|20200104
534|20200103|20200104
534|20200104|20200104
123|20200106|20200108
123|20200107|20200108
123|20200108|20200108
如果解释不当,我道歉。表1列出了任务完成的开始和结束日期。每个id都是唯一的条目。
我需要为每个startdateid多加一行(每次加1),直到它匹配enddate。
一天被添加到startdateid,直到它与enddateid匹配,此时我们停止复制。
这有道理吗?
我和cte打过交道,但一无所获。
1条答案
按热度按时间gk7wooem1#
使用递归cte。假设列实际上是日期:
如果列不是日期,我建议将它们转换为:
这是一把小提琴。
如果你的跨度可以超过100天,那么你需要添加
OPTION (MAXRECURSION 0)
到查询。