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
其中一期工程在一定程度上,但有很多的空值。请参阅下面的图片,了解我目前返回的内容以及我需要的理想内容。