2017-10-09 104 views
0
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 

我需要計算以分鐘計的重疊機器運行時間的數量。是否需要這樣做?有滯後還是導致? 或者我用子查詢來做?我在SQL Server 2016上工作。計算重疊分鐘的數量

+1

什麼是重疊的情況?請添加預期結果。 –

+0

重疊條件停止值條目>起始值下一條目 –

+0

查看條目2和3。他們平行運行。 –

回答

1

您可以使用此查詢。我從停止時間減去重疊的開始時間。

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 
+0

謝謝,這將有助於 –

+0

不客氣!爲了解決這個問題,你可以標記爲正確的嗎? –

+0

Sarslan Ovr.Start是什麼意思? –