2017-05-31 64 views
-1

我正在使用SQL Server 2014.我的表有兩列。第一列數據類型是datetime,第二個數據類型是nvarchar,包含兩種類型的數據,失敗和成功。這裏我提供了一個示例數據:如何獲取時間總和

 
Column 1    | Column 2 
------------------------+-------------- 
2017-05-25 05:30:36.950 | Success 
2017-05-25 06:00:37.117 | Success 
2017-05-25 06:30:37.077 | Success 
2017-05-26 03:00:37.227 | Fail 
2017-05-26 03:30:45.143 | Fail 
2017-05-26 04:00:36.793 | Success 
2017-05-26 04:30:36.957 | Success 

如何獲得成功行總數和失敗行總數的時間。例如,正如您在上面的示例數據中看到的那樣,我需要一個可以計算成功行1小時30分鐘和失敗行30分鐘的查詢。

+0

其SQL數據庫和請張貼預期的結果 – maSTAShuFu

+0

請郵寄預期與實際結果的文本,也表明你的查詢嘗試 – TheGameiswar

+0

@maSTAShuFu,我更新了我的問題的文字。 –

回答

0

如果我理解正確,這就是你需要的。

DECLARE @SampleData AS TABLE 
(
    Column1 datetime, 
    Column2 varchar(20) 
) 

INSERT INTO @SampleData (Column1,Column2) 
VALUES 
('2017-05-25 05:30:36.950', 'Success'), 
('2017-05-25 06:00:37.117', 'Success'), 
('2017-05-25 06:30:37.077', 'Success'), 
('2017-05-26 03:00:37.227', 'Fail'), 
('2017-05-26 03:30:45.143', 'Fail'), 
('2017-05-26 04:00:36.793', 'Success'), 
('2017-05-26 04:30:36.957', 'Success') 
;WITH temp AS 
(
    SELECT *, 
      lag(sd.Column2) over(ORDER BY sd.Column1) AS PreviousColumn2, 
      lag(sd.Column1) over(ORDER BY sd.Column1) AS PreviousColumn1 
    FROM @SampleData sd 
) 

SELECT t.Column2,sum(datediff(minute,t.PreviousColumn1, t.Column1)) AS TotalMinutes 
FROM temp t 
WHERE t.Column2 = t.PreviousColumn2 
GROUP BY t.Column2 

返回

Column2 TotalMinutes 
Fail 30 
Success 90 

參考:LAG Window function

+0

非常感謝。這正是我想要的。大。 –