遞迴

test104 2018-05-04 09:11:15
NAME STARTDAY ENDDAY
------------------------------------------------------
A 2018-04-01 2018-04-02
B 2018-04-02 2018-04-03


with A as(
select Name,StartDay NowDay,StartDay,EndDay from (
select 'A' Name ,'2018-04-01' StartDay,'2018-04-02' EndDay
union ALL
select 'B' Name ,'2018-04-02' StartDay,'2018-04-03' EndDay) as M
UNION ALL
SELECT Name,NowDay,StartDay,EndDay
FROM A
WHERE (DATEADD(d, 1, StartDay) <EndDay))select * from A

我希望SELECT 結果

NAME NowDay STARTDAY ENDDAY
------------------------------------------------------
A 2018-04-01 2018-04-01 2018-04-02
B 2018-04-02 2018-04-02 2018-04-03
B 2018-04-03 2018-04-02 2018-04-03
...全文
803 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingqing6364 2018-05-04
  • 打赏
  • 举报
回复
with A as(
select Name,StartDay NowDay,StartDay,EndDay from (
select 'A' Name ,'2018-04-01' StartDay,'2018-04-02' EndDay
union ALL
select 'B' Name ,'2018-04-02' StartDay,'2018-04-03' EndDay) as M
UNION ALL
SELECT Name,CONVERT(VARCHAR(10),DATEADD(d, 1, NowDay),120),StartDay,EndDay
FROM A
WHERE (DATEADD(d, 1, NowDay) <= EndDay))

select * from A ORDER BY Name, NowDay

这样???
RINK_1 2018-05-04
  • 打赏
  • 举报
回复



if OBJECT_ID(N'tempdb..#T') is not null
drop table #T
go

create table #T
(name varchar(10),
startday date,
endday date)

insert into #T
select 'A','2018-04-01','2018-04-02' union all
select 'B','2018-04-02','2018-04-03' union all
select 'A','2018-04-03','2018-04-04'

with cte
as
(select A.number,B.min_startday 
from master.dbo.spt_values A
join
(select datediff(day,MIN(startday) ,MAX(endday)) as date_len,MIN(startday) as min_startday from #T) as B ON A.number<=B.date_len
where type='P')

select ISNULL(B.name,C.name) AS NAME,
       DATEADD(DAY,number,A.min_startday) AS NOWDAY,
       ISNULL(B.startday,C.startday) AS STARTDAY,
       ISNULL(B.endday,C.endday) AS ENDDAY
from cte A
left join #T B on B.startday=DATEADD(DAY,number,A.min_startday)
left join #T C on C.startday=DATEADD(DAY,-1,DATEADD(DAY,number,A.min_startday))

34,592

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧