gpt4 book ai didi

c# - 用于搜索日期的 SQL 查询

转载 作者:可可西里 更新时间:2023-11-01 07:44:43 32 4
gpt4 key购买 nike

我编写了一个 SQL 查询,用于在员工 ATTENDANCE 表中搜索缺勤人员。但是我怎样才能显示日期我的意思是缺席日期的日期?它工作正常,除了日期。我想展示那段缺席的日子是哪一天?我无法显示日期。

示例:

BadgeNumber - EmployeeName - Absent Date
10042 - Mr. Erik - 2014-07-01

代码:

SELECT  SMEmployee.BadgeNumber,SMEmployee.EmployeeFullName,SMDepartment.DepartmentName
FROM SMEmployee
LEFT OUTER JOIN SMDepartment
ON SMDepartment.DepartmentID=SMEmployee.DepartmentID
WHERE EmployeeID NOT IN (
SELECT empCheckInOut.USERID
FROM empCheckInOut
WHERE convert(date,CHECKTIME)='2014-07-01')

最佳答案

通常检查记录是否存在(就像你在这里做的出勤一样,检查员工没有在一天签到/ checkout )使用 LEFT OUTER JOIN 和检查更有效WHERE 子句中的字段之一为 NULL(即,未找到行的 LEFT JOIN)。

但是这也不会给你日期。

我假设您想检查一组日期,这需要通过他们缺席的日期。

因此,可以使用一系列联合的简单查询来获取日期,将其交叉连接到您的员工表,然后将其左连接到 empCheckInOut 表。这样您就可以标明日期。

SELECT  SMEmployee.BadgeNumber,SMEmployee.EmployeeFullName,SMDepartment.DepartmentName, subDate.aDate
FROM SMEmployee
CROSS JOIN (SELECT '2014-07-01' AS aDate UNION SELECT '2014-06-30') subDate
LEFT OUTER JOIN SMDepartment
ON SMDepartment.DepartmentID=SMEmployee.DepartmentID
LEFT OUTER JOIN empCheckInOut
ON SMEmployee.EmployeeID = empCheckInOut.USERID
AND convert(date,CHECKTIME) = subDate.aDate
WHERE empCheckInOut.USERID IS NULL

关于c# - 用于搜索日期的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24508372/

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