1
重寫和重新發布此問題,因爲上一個問題很混亂。我很抱歉。在SQL Server 2008中的行之間添加分鐘 - 更新
我正在嘗試創建一個報告,顯示特定事件的持續時間,特別是事件之間的時間。我處理的數據的一個例子是:
> LoggedOnUser|EventDate |EventTime|EventID
> DWH |08/10/2015|07:45:00 |4624
> DWH |08/10/2015|07:46:00 |4800
> DWH |08/10/2015|07:50:00 |4801
> DWH |08/10/2015|08:27:00 |4800
> DWH |08/10/2015|16:18:00 |4801
> DWH |08/10/2015|16:31:00 |4647
的數據是簡單和用於選擇上述查詢是
SELECT sd.LoggedOnUser
, sd.EventDate
, CAST(dateadd(mi, datediff(mi, 0, sd.EventTime), 0)
AS TIME(7)) AS EventTime
, sd.EventID
FROM dbo.tblStaffLoggedInDetails AS sd
WHERE LoggedOnUser = 'DWH'
AND EventDate = '08-Oct-2015'
我有了所有1個分鐘的時間間隔的間隔表。所需的輸出將是:
> LoggedOnUser|EventDate |EventTime|EventID
> DWH |08/10/2015|07:45:00 |4624
> DWH |08/10/2015|07:46:00 |4800
> DWH |08/10/2015|07:47:00 |4800
> DWH |08/10/2015|07:48:00 |4800
> DWH |08/10/2015|07:49:00 |4800
> DWH |08/10/2015|07:50:00 |4801
> DWH |08/10/2015|07:51:00 |4801
> DWH |08/10/2015|07:52:00 |4801
> DWH |08/10/2015|07:53:00 |4801
> DWH |08/10/2015|07:54:00 |4801
等等...
到目前爲止我走到這一步
SELECT ii.IntervalHHMM
, dd.LoggedOnUser
, dd.EventDate
, dd.EventTime
, dd.EventID
FROM (SELECT IntervalHHMM
FROM dtLookups.dbo.tblIntervalHHMM AS i) AS ii LEFT OUTER JOIN
(SELECT LoggedOnUser
, EventDate
, CAST(DATEADD(mi, DATEDIFF(mi, 0, EventTime), 0)
AS TIME(7)) AS EventTime
, EventID
, Action
FROM dbo.tblStaffLoggedInDetails AS sd
WHERE (LoggedOnUser = 'DWH') AND (EventDate = '08-Oct-2015'))
AS dd
ON ii.IntervalHHMM = dd.EventTime
GROUP BY dd.LoggedOnUser, dd.EventDate,
dd.EventTime, dd.EventID,
dd.Action, ii.IntervalHHMM
ORDER BY ii.IntervalHHMM
其中一期工程在一定程度上,但有很多的空值。請參閱下面的圖片,瞭解我目前返回的內容以及我需要的理想內容。