SQL Server分组间隔

时间:2016-12-19 18:05:02

标签: sql sql-server group-by scheduling overlapping

我有一个查询返回我需要的数据,但时间与其他数据重叠。

这是我的疑问:

DECLARE @newinterval INT = 60;

;WITH cte AS 
(
    SELECT
        t1.IdSchedulingByInterval AS IdSchedulingByIntervalMin, 
        t2.IdSchedulingByInterval AS IdSchedulingByIntervalMax,
        t1.SchedulingByIntervalStartDate,
        t2.SchedulingByIntervalEndDate
    FROM
        RDV_tbSchedulingByInterval t1
    JOIN 
        RDV_tbSchedulingByInterval t2 ON t2.SchedulingByIntervalStartDate = DATEADD(minute, @newinterval - 5, t1.SchedulingByIntervalStartDate)
                                      AND t1.IdCie = t2.IdCie 
                                      AND t1.IdBranch = t2.IdBranch 
                                      AND t1.IdResource = t2.IdResource
    WHERE
        t1.IdCie = 1 AND t1.IdBranch = 1 
        AND t1.IdResource = 1 
        AND t1.SchedulingByIntervalStartDate BETWEEN '2016-12-01' AND '2016-12-31'
) 
SELECT * 
FROM cte A
WHERE (SELECT SUM(5) FROM RDV_tbSchedulingByInterval 
       WHERE IdSchedulingByInterval BETWEEN A.IdSchedulingByIntervalMin  AND A.IdSchedulingByIntervalMax) = @newinterval 
ORDER BY a.SchedulingByIntervalStartDate

这是查询的结果:

MinID  MaxID    StartDate               EndDate
492551  492562  2016-12-16 08:15:00.000 2016-12-16 09:15:00.000
492552  492563  2016-12-16 08:20:00.000 2016-12-16 09:20:00.000
492553  492564  2016-12-16 08:25:00.000 2016-12-16 09:25:00.000
492554  492565  2016-12-16 08:30:00.000 2016-12-16 09:30:00.000
492555  492566  2016-12-16 08:35:00.000 2016-12-16 09:35:00.000
492556  492567  2016-12-16 08:40:00.000 2016-12-16 09:40:00.000
492557  492568  2016-12-16 08:45:00.000 2016-12-16 09:45:00.000
492558  492569  2016-12-16 08:50:00.000 2016-12-16 09:50:00.000
492559  492570  2016-12-16 08:55:00.000 2016-12-16 09:55:00.000
492560  492571  2016-12-16 09:00:00.000 2016-12-16 10:00:00.000
492561  492572  2016-12-16 09:05:00.000 2016-12-16 10:05:00.000
492562  492573  2016-12-16 09:10:00.000 2016-12-16 10:10:00.000
492563  492574  2016-12-16 09:15:00.000 2016-12-16 10:15:00.000
492564  492575  2016-12-16 09:20:00.000 2016-12-16 10:20:00.000
492565  492576  2016-12-16 09:25:00.000 2016-12-16 10:25:00.000
492566  492577  2016-12-16 09:30:00.000 2016-12-16 10:30:00.000
492567  492578  2016-12-16 09:35:00.000 2016-12-16 10:35:00.000
492568  492579  2016-12-16 09:40:00.000 2016-12-16 10:40:00.000
492569  492580  2016-12-16 09:45:00.000 2016-12-16 10:45:00.000
492570  492581  2016-12-16 09:50:00.000 2016-12-16 10:50:00.000
492571  492582  2016-12-16 09:55:00.000 2016-12-16 10:55:00.000

预期输出必须是:

MinID   MaxID    StartDate               EndDate
492551  492562  2016-12-16 08:15:00.000 2016-12-16 09:15:00.000
492563  492574  2016-12-16 09:15:00.000 2016-12-16 10:15:00.000

我不希望时间重叠其他我怎么能这样做?

0 个答案:

没有答案