【问题标题】:SELECT Record that have start date and enddate [closed]选择具有开始日期和结束日期的记录[关闭]
【发布时间】:2020-05-07 08:52:59
【问题描述】:
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    05-01-2020
1  08-01-2020    11-10-2020

【问题讨论】:

  • 我们很乐意为您提供帮助,但不是为您服务。请试一试,发布您的尝试并询问您卡在哪里。

标签: sql-server tsql


【解决方案1】:

你可以使用APPLY

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;

【讨论】:

    【解决方案2】:
    select * from YourTable where (startDate is not null and  Enddate is not null)
    

    【讨论】:

    • 这与现有答案有何不同?
    • 它们和我们在同一时间发布的一样!
    • 你没有在同一时间发帖 - 看看答案上的时间戳 - 整整 2 分钟后。
    • 当我发布答案时,您的问题没有任何答案。无论如何,2 分钟差别不大
    • 无论哪种方式,它都不会给出 OP 的预期输出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多