基于区间的报告Sql Server

时间:2016-06-21 07:29:46

标签: sql sql-server

我需要CC代理的首次登录上次退出报告,我有他们在轮班期间执行的每次登录和退出的信息(即退出午餐/烟雾/休息时间等)。

我们有以下转变:

S.No    Shift         Possible Login    Possible Log Out
1.      08 – 04       8: 07             16:05
2.      10 – 06       10:03             18:09
3.      04 – 00       16:08             00:02
4.      06 – 02       18:04             02:01
5.      00 – 08       23:57             08:04 

我有这个观点来收集相关信息如下:

Login Log Out Details

此报告的问题在于,如果我生成的单日报告为 20/06/2016 ,那么我无法捕获有关Shift S.No的信息。 (3,4,5)因为有一天的变化。

例如:

  

代理登录日期/时间是: 20/06/2016 18:10

  

代理退出日期/时间为: 21/06/2016 02:05

我需要一些类似于Interval列的地方,其中一天从 20/06/2016 03:00 开始,一天结束于 21/06/2016 03:00 如何实现这个间隔?或者,如果您对此报告要求有任何其他想法。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,根据您在那里显示的视图,您需要为所有正在处理的人提供数据,例如 20/06/2016 ?如果是这样,我相信你可以从视图中选择所有

的人
CAST(FirstLogin AS date) = '20160620'

如果您还需要包括那些开始 19/06/2016 并在 2016年6月20日上结束的人,那么您也会这样做< EM> LastLogOut

此外,如果您要将其作为动态查询编写,例如,如果您需要为昨天提供报告,则可以替换where子句中的 20/06/2016

CAST(DATEADD(day, -1, GETDATE()) AS date)