Sql server 2008 SQL Server 2008,考勤表

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

我有三张桌子:

表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            | '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将数据以表格形式显示,以便很容易理解问题陈述。先生,我只需要在星期日和星期六显示缺席,而员工星期五和星期一缺席。您如何保存表示该员工缺席的数据?我已发布了我的代码。请看一看。工作正常。但新的要求是,如果假期发生在连续缺勤之间,则应视为缺勤。