首页 > 解决方案 > 如何找到当前工作的所有员工并使用循环选择他们

问题描述

我正在尝试实现一个员工任务分配应用程序。

我的 SQL 服务器数据库中有一个员工轮班详细信息表。我需要选择当前时间的员工,并使用轮询调度从当前轮班的员工列表中选择一名员工来完成一项任务

CREATE TABLE [dbo].[Tbl_Shift_Details](
    [ID] [bigint] IDENTITY(1,1) NOT NULL,
    [Shift_Type] [varchar](10) NOT NULL,
    [Week_day] [int] NOT NULL,
    [Login_Time] [varchar](5) NULL,
    [Logout_Time] [varchar](5) NULL,
    [Assignees_Name] [varchar](100) NULL,
    [Assignees_Email] [varchar](500) NULL,
    [Team_Lead_Email] [varchar](30) NULL
) ON [PRIMARY]
GO

我可以使用以下查询选择当前工作的员工

SELECT *
FROM [dbo].[Tbl_Shift_Details]
WHERE Week_day = DATEPART(weekday, Dateadd(hh,-5.00,getdate())) and
       ((Logout_Time > Login_Time and 
         DATEPART(HOUR,Dateadd(hh,-5.00,getdate())) >= Login_Time and 
         DATEPART(HOUR,Dateadd(hh,-5.00,getdate())) <= Logout_Time) or
        (Logout_Time < Login_Time and DATEPART(HOUR,Dateadd(hh,-5.00,getdate())) >= Login_Time)
       );

这个查询输出这个

+----+------------+----------+------------+-------------+-----------------+--------------------------+--------------------------+
| ID | Shift_Type | Week_day | Login_time | Logout_Time | Assignees_Name  |     Assignees_Email      |     Team_Lead_Email      |
+----+------------+----------+------------+-------------+-----------------+--------------------------+--------------------------+
|  1 | 1st        |        2 |          8 |          18 | John Doe        | johndoe@aol.com          | jimmykimmel@fun.com      |
|  7 | 2nd        |        2 |         12 |          21 | Noah Arc        | Noaharc@aol.com          | jimmykimmel@fun.com      |
| 11 | 3rd        |        2 |         15 |          24 | John Everyman   | johneveryman@gmail.com   | BodrumSalvador@yahoo.com |
| 16 | 2nd        |        2 |         12 |          21 | Theodore Handle | theodorehandle@yahoo.com | BodrumSalvador@yahoo.com |
| 21 | 3rd        |        2 |         15 |          24 | Sue Shei        | SueShei@dxc.com          | jimmykimmel@fun.com      |
+----+------------+----------+------------+-------------+-----------------+--------------------------+--------------------------+

我一次只需要使用循环选择一名员工。我可以在 SQL 服务器本身内部执行此操作吗?

标签: sqlsql-serverdatabase

解决方案


推荐阅读