如何根据sql server中的设备登录更新员工的出勤率 [英] how to update the attendance of an employee based on device logins in sql server

查看:89
本文介绍了如何根据sql server中的设备登录更新员工的出勤率的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

hi


i有两个表dbo.tempDeviceLogs和dbo.Emp_setting



dbo.tempDeviceLogs列是

hi
i am having two tables dbo.tempDeviceLogs and dbo.Emp_setting

dbo.tempDeviceLogs columns are

column name         data type        allow nulls 

LogsID                int                Unchecked
Device_Person_id      int                Unchecked
Device_id             int                Unchecked
logDateTime           datetime           Unchecked              
logVerifyMode         nchar(10)          Unchecked
workCodeID            int                Unchecked
Machin_install_id     int                unchecked 
data_loaded_dt        datetime           checked
Inout                 int                checked



dbo.Emp_setting


dbo.Emp_setting

column name     data type   allow nulls 

Empset_id	int	Unchecked
personal_id	int	Unchecked
DesignationID	int	Checked
DivisionID	int	Checked
Emp_status	char(1)	Unchecked
Emp_TypeId	int	Checked
Dept_Id		int	Checked
Group_Id	int	Checked
NDIVGRP_CODE	bigint	Checked



i希望员工身份存在或缺席基于设备登录



i尝试了这个


i want employee status to be present or absent based on device logins

i tried this one

UPDATE dbo.Emp_setting
SET Emp_status = CASE WHEN
	EXISTS(
		SELECT *
		FROM dbo.tempDeviceLogs
		WHERE
			tempDeviceLogs.logDateTime = Emp_setting.Emp_status
			AND logDateTime >= CAST(GETDATE() AS datetime)
		) THEN 'P'
	ELSE 'A' END;



但由于而导致错误tempDeviceLogs.logDateTime = Emp_setting.Emp_status



i是sql server的新手请帮我搞定结果


but this is causing error because of "tempDeviceLogs.logDateTime = Emp_setting.Emp_status"

i am new to sql server please help me to get results

推荐答案

您是正确的,它将显示/更新所有记录的ABSENT,因为您的日期时间包含上个月的数据。减去那么多。从以上查询中的GETDATE()开始,您将得到所需的输出。
You are correct it will show / update ABSENT for all records as your date time contains last months data. Minus that much no. of days from GETDATE() in above query, you will get the desired output.


您好,



试试这个



这里我假设Device_Person_id和personal_id列具有相同的值。



Hi,

Try This

here i am assuming that Device_Person_id and personal_id columns are having same values.

UPDATE dbo.Emp_setting
SET Emp_status = CASE WHEN (SELECT COUNT(*) FROM  dbo.tempDeviceLogs WHERE CONVERT(VARCHAR,tempDeviceLogs.logDateTime,101) = CONVERT(VARCHAR,GETDATE(),101)
AND Device_Person_id = personal_id) > 0 THEN 'P' ELSE 'A' END







希望这会对你有帮助。




Hope this will help you.


检查这个,





Check This,


UPDATE dbo.Emp_setting
SET Emp_status = CASE WHEN (SELECT COUNT(*) FROM  dbo.tempDeviceLogs WHERE CONVERT(VARCHAR,tempDeviceLogs.logDateTime,101) = CONVERT(VARCHAR,GETDATE() - 31 ,101)
AND Device_Person_id = personal_id) > 0 THEN 'P' ELSE 'A' END


这篇关于如何根据sql server中的设备登录更新员工的出勤率的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆