【发布时间】:2019-06-01 19:53:55
【问题描述】:
我的表中有以下数据:
ID StartDate EndDate
-------------------------------
222 2019-04-01 2019-04-16
222 2019-04-16 2019-04-30
562 2019-04-01 2019-04-08
562 2019-04-08 2019-04-15
562 2019-04-15 2019-04-22
562 2019-04-22 2019-04-29
228 2019-04-02 2019-04-09
228 2019-04-10 2019-04-16
228 2019-04-15 2019-04-23
228 2019-04-26 2019-04-30
228 2019-04-01 2019-04-16
条件是如果Enddate = StartDate,那么它必须检查他们的StartDate和EndDate和预期的输出如下:
ID StartDate EndDate
-----------------------------------
222 2019-04-01 2019-04-30
562 2019-04-01 2019-04-29
【问题讨论】:
-
如果数据看起来像这样呢?ID StartDate EndDate 222 2019-04-01 2019-04-15 222 2019-04-16 2019-04-30
-
您不只是分别为
StartDate和EndDate列返回MIN和MAX..?解决这个问题你累了什么? -
在检查任何 ID 的完整时长时,我只需要确保我没有错过任何一周或一天。
-
不确定我是否理解您的问题,但此查询应返回预期输出:
SELECT ID, MIN(StartDate) AS StartDate, MAX(EndDate) AS EndDate FROM dbo.YourTable GROUP BY ID; -
如果有任何一天的差距,那么 Min 和 Max 无济于事。
标签: sql-server