Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 计算重叠分钟数_Sql_Sql Server - Fatal编程技术网

Sql 计算重叠分钟数

Sql 计算重叠分钟数,sql,sql-server,Sql,Sql Server,我需要以分钟为单位计算重叠机器的运行时间。是否有必要这样做?落后还是领先? 还是通过子查询来实现?我在SQL Server 2016上工作 您可以使用此查询。我从停止时间中减去重叠的开始时间 Start, Stop, Machine, Prodid 2017-09-11 06:36:37.000 2017-09-11 07:41:35.000 CNC M 6 17-012811 2017-09-11 07:49:27.00

我需要以分钟为单位计算重叠机器的运行时间。是否有必要这样做?落后还是领先?
还是通过子查询来实现?我在SQL Server 2016上工作

您可以使用此查询。我从停止时间中减去重叠的开始时间

Start,                  Stop,                   Machine,   Prodid
2017-09-11 06:36:37.000 2017-09-11 07:41:35.000 CNC M 6 17-012811
2017-09-11 07:49:27.000 2017-09-11 10:10:01.000 CNC M 6 17-012811
2017-09-11 09:34:46.000 2017-09-11 10:10:01.000 CNC M 7 17-012738
2017-09-11 10:14:50.000 2017-09-11 11:50:15.000 CNC M 6 17-012811
2017-09-11 10:15:50.000 2017-09-11 11:50:15.000 CNC M 7 17-012738
2017-09-11 11:55:52.000 2017-09-11 12:17:03.000 CNC M 6 17-012811
2017-09-11 11:56:15.000 2017-09-11 12:17:14.000 CNC M 7 17-012738

什么是重叠条件?请添加预期结果。重叠条件Stopvalue条目>开始值下一条目查看条目2和条目3。它们并行运行。谢谢。这会有帮助的。不客气!为了结束这个问题,你能标记为正确吗?Sarslan Ovr.Start是什么意思?Ovr.Start下一台机器启动时间。我认为之前的机器应该在那之前停止。如果它继续,它将重叠。它来自外部应用连接。
DECLARE @Tbl TABLE(Start DATETIME, [Stop] DATETIME,Machine VARCHAR(20),Prodid VARCHAR(20))

INSERT INTO @Tbl VALUES

('2017-09-11 06:36:37.000','2017-09-11 07:41:35.000','CNC M 6','17-012811'),
('2017-09-11 07:49:27.000','2017-09-11 10:10:01.000','CNC M 6','17-012811'),
('2017-09-11 09:34:46.000','2017-09-11 10:10:01.000','CNC M 7','17-012738'),
('2017-09-11 10:14:50.000','2017-09-11 11:50:15.000','CNC M 6','17-012811'),
('2017-09-11 10:15:50.000','2017-09-11 11:50:15.000','CNC M 7','17-012738'),
('2017-09-11 11:55:52.000','2017-09-11 12:17:03.000','CNC M 6','17-012811'),
('2017-09-11 11:56:15.000','2017-09-11 12:17:14.000','CNC M 7','17-012738')

SELECT T1.*, DATEDIFF(MINUTE, Ovr.Start , T1.[Stop])  Overlapping FROM @Tbl T1
OUTER APPLY (SELECT TOP 1 * FROM @Tbl T2 WHERE T2.Start > T1.Start AND T2.Start < T1.Stop ORDER BY T2.Start) ) AS Ovr
Start                   Stop                    Machine              Prodid               Overlapping
----------------------- ----------------------- -------------------- -------------------- -----------
2017-09-11 06:36:37.000 2017-09-11 07:41:35.000 CNC M 6              17-012811            NULL
2017-09-11 07:49:27.000 2017-09-11 10:10:01.000 CNC M 6              17-012811            36
2017-09-11 09:34:46.000 2017-09-11 10:10:01.000 CNC M 7              17-012738            NULL
2017-09-11 10:14:50.000 2017-09-11 11:50:15.000 CNC M 6              17-012811            95
2017-09-11 10:15:50.000 2017-09-11 11:50:15.000 CNC M 7              17-012738            NULL
2017-09-11 11:55:52.000 2017-09-11 12:17:03.000 CNC M 6              17-012811            21
2017-09-11 11:56:15.000 2017-09-11 12:17:14.000 CNC M 7              17-012738            NULL