gpt4 book ai didi

sql - SQL Server中的更新自动化

转载 作者:行者123 更新时间:2023-12-04 13:22:56 25 4
gpt4 key购买 nike

我正在做一个名为“考勤管理系统”的项目

该公司拥有自己的生物指纹扫描仪,用于检查员工的出勤情况并存储在数据库表中。

该表包含4个字段(ID autonumber, EmployeeNo, CheckTime and CheckType)
计时系统存储所有员工的日志和出勤情况,但未指定检查类型为“I”还是“O”。如下图所示,每次员工登录时,系统都会自动将其存储到数据库中,但存储为“I”,当同一位员工再次登录时,它将再次存储为“I”。

我的客户希望它尽可能自动化。一旦员工再次登录,他想将检查类型更改为“O”。

例如:

我是员工我要在今天上午8点登录,然后它将存储为数据库

今天上午8点,其检查类型为“I”。由于我不知道自己已经登录,所以我第二次在上午8:04登录。系统再次将其存储为“I”,就像我要在下午5点注销,系统还将其记录为“I”。

我想自动更新数据库。没有用户提供的任何参数。我希望它在存储过程中以使过程自动化。

它应限制在同一员工内:
例子:

Employee1今天上午8点登录。(检查类型为“I”)
Employee1于今天上午11点再次登录...(检查类型为“O”)
employee1今天下午12点再次登录。(检查类型为“I”)
employee1在今天下午4点再次登录(检查类型为“O”)

标准应限制在employeeno(仅检查时间)内,并且还希望根据给定的数据更新检查类型。

旧系统无法将登录的登录名存储为“O”,而纯粹是“I”。

这个怎么做?我需要您的投入,并提供严重帮助!请?

我已经创建了一个存储过程,但是不知道在哪里可以启动它,而且我不知道要完成该过程并使它正常工作。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE AUTOMATIC_OVERRIDE
@ID INT,
@EMPLOYEENO NVARCHAR(20),
@CHECKTIME DATETIME,
@CHECKTYPE NVARCHAR(1)

AS
SET NOCOUNT ON;
WHILE @ID = (SELECT ID FROM CHECKTIME)

SELECT ID,EMPLOYEENO,CHECKTIME,CHECKTYPE
FROM CHECKTIME
GROUP BY ID,EMPLOYEENO,CHECKTIME,CHECKTYPE
ORDER BY CHECKTIME
GO

请帮我解决这个问题。谢谢。

最佳答案

编辑:

进入中华人民共和国的解决方案:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE AutomaticOverrideByID
@ID INT,
@EMPLOYEENO NVARCHAR(20)

AS

UPDATE CHECKTIME
SET CHECKTYPE = CASE WHEN (SELECT
COUNT(ID) AS CountOfLogin
FROM CHECKTIME
WHERE CHECKTIME.EMPLOYEENO = @EMPLOYEENO
AND CHECKTIME.CheckTime < C.CheckTime) % 2 = 1 THEN 'O' ELSE CHECKTYPE END
FROM CHECKTIME C
WHERE C.ID = @ID

GO

这是Dhenn要求的对现有数据集的更新:
UPDATE CHECKTIME
SET CHECKTYPE = CASE WHEN (SELECT
COUNT(ID) AS CountOfLogin
FROM CHECKTIME
WHERE CHECKTIME.EMPLOYEENO = C.EMPLOYEENO
AND CHECKTIME.CheckTime < C.CheckTime) % 2 = 1 THEN 'O' ELSE CHECKTYPE END
FROM CHECKTIME C

附加的 SQL Fiddle

关于sql - SQL Server中的更新自动化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12154455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com