Sql server 2008 SQL Server 2008,考勤表
我有三张桌子: 表1员工:Sql server 2008 SQL Server 2008,考勤表,sql-server-2008,Sql Server 2008,我有三张桌子: 表1员工: EmpID | EmpName 1 |'Mr. A' 2 |'Mr. B' 工作日一览表: OffDayID | OffDayName | OffDayValue 1 | 'Saturday' | 7 2 | 'Sunday' | 1 出席人数表: AttendanceID | Date | EmpID 1 | '2014-06-02' | 1 2 | '2
EmpID | EmpName
1 |'Mr. A'
2 |'Mr. B'
工作日一览表:
OffDayID | OffDayName | OffDayValue
1 | 'Saturday' | 7
2 | 'Sunday' | 1
出席人数表:
AttendanceID | Date | EmpID
1 | '2014-06-02' | 1
2 | '2014-06-03' | 1
3 | '2014-06-04' | 1
4 | '2014-06-05' | 1
5 | '2014-06-10' | 1
ID为1的员工“A先生”在“2014-06-06”周五和“2014-06-09”周一缺席。
如何右键查询以显示缺勤期间的假期“0214-06-07”、周六和“2014-06-8”周日
请帮忙
我的存储过程是
DECLARE @DATE_FROM AS DATETIME
DECLARE @DATE_TO AS DATETIME
SET @DATE_FROM = '2014-05-01'
SET @DATE_TO = '2014-05-31'
DECLARE @DATE_FROM2 AS DATETIME
DECLARE @DATE_TO2 AS DATETIME
SET @DATE_FROM2 = @DATE_FROM
SET @DATE_TO2 = @DATE_TO
TRUNCATE TABLE AttendanceRegister
--------------------Present,Absent,Leave-----------------------
WHILE @DATE_FROM <= @DATE_TO
BEGIN
INSERT INTO AttendanceRegister
SELECT E.EmployeeID,
@DATE_FROM,
CASE
WHEN A.AttendanceID IS NULL OR A.TimeIn IS NULL
THEN
CASE
WHEN @DATE_FROM IN
(
SELECT CONVERT(DATE,LeaveDate)
FROM LeaveDetail
WHERE EmployeeID = E.EmployeeID
)
THEN 'L'
ELSE 'A'
END
ELSE 'P'
END
FROM Employee E
LEFT OUTER JOIN Attendance A ON A.[DayofMonth] = @DATE_FROM
AND A.EmployeeID = E.EmployeeID AND A.IS_DELETED = 0
WHERE E.IS_DELETED = 0 AND E.IS_ACTIVE = 1
AND DATEPART(WEEKDAY,@DATE_FROM)
NOT IN (
SELECT OffDayValue
FROM OffDays
)
SET @DATE_FROM = DATEADD(D,1,@DATE_FROM)
END
-------------------------Holidays------------------------------
WHILE @DATE_FROM2 <= @DATE_TO2
BEGIN
IF DATEPART(WEEKDAY,@DATE_FROM2)
IN (
SELECT OffDayValue
FROM OffDays
)
BEGIN
INSERT INTO AttendanceRegister
SELECT E.EmployeeID, @DATE_FROM2,'H'
FROM Employee E
WHERE E.IS_DELETED = 0 AND E.IS_ACTIVE = 1
END
SET @DATE_FROM2 = DATEADD(D,1,@DATE_FROM2)
END
---------------------------------------------------------------
SELECT *
FROM AttendanceRegister
将@DATE\u FROM声明为DATETIME
将@DATE\u声明为DATETIME
设置@DATE_FROM='2014-05-01'
将@DATE_设置为='2014-05-31'
将@DATE\u FROM2声明为DATETIME
将@DATE\u TO2声明为DATETIME
设置@DATE\u FROM 2=@DATE\u FROM
将@DATE\u设置为2=@DATE\u设置为
截断表寄存器
--------------------出席、缺席、离开------------------
虽然@DATE_FROM将数据以表格形式显示,以便很容易理解问题陈述。先生,我只需要在星期日和星期六显示缺席,而员工星期五和星期一缺席。您如何保存表示该员工缺席的数据?我已发布了我的代码。请看一看。工作正常。但新的要求是,如果假期发生在连续缺勤之间,则应视为缺勤。