Sql server 选择具有开始日期和结束日期的记录

Sql server 选择具有开始日期和结束日期的记录,sql-server,tsql,Sql Server,Tsql,我们需要输出 id startDate Enddate 1 01-01-2020 NULL 1 02-01-2020 NULL 1 03-01-2020 NULL 1 04-01-2020 NULL 1 05-01-2020 05-01-2020 1 08-01-2020 NULL 1 09-01-2020 NULL 1 10-01-2020 NULL 1 11-01-2020 11-10-2020 您可以使用应用程序: 我们很乐意帮忙,但不是为了你。请试

我们需要输出

id startDate  Enddate
1  01-01-2020  NULL
1  02-01-2020  NULL
1  03-01-2020  NULL
1  04-01-2020  NULL
1  05-01-2020  05-01-2020
1  08-01-2020  NULL
1  09-01-2020  NULL
1  10-01-2020  NULL
1  11-01-2020  11-10-2020
您可以使用应用程序:


我们很乐意帮忙,但不是为了你。请试一试,发布你的尝试,并询问你在哪里被卡住了。这与现有答案有什么不同?它们与我们在同一时间发布的答案相同!你没有在同一时间发布-看看答案上的时间戳-你整整晚了2分钟。当我发布答案时,你的问题没有任何答案。2分钟无论如何都没有太大的区别,也没有给出OP的预期输出
id startdate     Enddate
1  01-01-2020    05-01-2020
1  08-01-2020    11-10-2020
select * from YourTable where (startDate is not null and  Enddate is not null)
SELECT t.ID, MIN(t.startdate) AS StartDate, MAX(t.Enddate) AS EndDate
FROM table t OUTER APPLY
     ( SELECT TOP (1) t1.Enddate
       FROM table t1
       WHERE t1.id = t.id AND t1.startdate >= t.startdate AND t1.enddate IS NOT NULL
       ORDER BY t1.startdate  
     ) t1
GROUP BY t.ID, t1.Enddate;