栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

查找一天中花费的时间以及需要休息的时间

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

查找一天中花费的时间以及需要休息的时间

请尝试这个。处理多个休息/员工和个案,当休息仍在进行中或会话未完成时

select     [EmployeeId]   =   [s].[EmployeeId]    ,[StartTime]    =   [s].[ScanDateTime]    ,[EndTime]      =   [et].[ScanDateTime]    ,[BreakInMins]  =   [b].[BreakInMins]from    [Scans] as  [s] --  here is your tableouter apply    (   select top 1 [ScanDateTime], [Id] from [Scans] where [Id] > [s].[Id] and [EmployeeId] = [s].[EmployeeId] and [Status] = 4 order by [ScanDateTime] asc    )       as  [et]outer apply    (        select   [BreakInMins] = sum(isnull([r].[mins], datediff(mi, [sp].[ScanDateTime], getdate())))        from [Scans] as [sp]        outer apply (     select top 1 [mins] = datediff(mi, [sp].[ScanDateTime], [ScanDateTime]) from [Scans] where [Id] > [sp].[Id] and [EmployeeId] = [sp].[EmployeeId] and [Status] IN (3, 4) order by [ScanDateTime] asc ) as [r]        where     [sp].[id] > [s].[id] and [sp].[id] < isnull([et].[id], [id] + 1) and [sp].[EmployeeId] = [s].[EmployeeId] and [sp].[Status] = 2    )       as  [b]    where        [Status] = 1;

这是易于测试的脚本:脚本



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407597.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号