Как упомянуть Leavetype в реестре посещаемости сотрудников? - PullRequest
0 голосов
/ 21 января 2019

У меня есть две таблицы.Один из них - посещаемость сотрудника, а второй - отпуск сотрудника.

  • Кол. Посещаемости сотрудника (Empid, INTIME, OUTTIME, Status)
  • Кол. Сотрудника (Empid, StartDate, Endate, lefttype (PL, CL, SL))

Я создал сводную таблицу, в которой упомянуто присутствие, отсутствие и HD, и создал еще один отдельный запрос на сумму строки (настоящее, отсутствие и HD) из таблицы EmployeeAttendance.

=== Запрос суммы ===

SELECT SUM(CASE WHEN status = 'P' THEN 1  
WHEN status = 'HD' THEN 0.5 WHEN status = 'A' THEN 0 END) AS [T.P],  
SUM(CASE WHEN status = 'A' THEN 1 WHEN status = 'HD' THEN 0.5 END) AS [A],  
SUM(CASE WHEN status = 'P' THEN 1  
WHEN status = 'HD' THEN 1 WHEN status = 'A' THEN 1 END) AS [TDay ]  
FROM EmployeesAttendance  
--WHERE (ReportingDate BETWEEN @StartDate AND @Enddate)  
GROUP BY EmpID

=== Сводная таблица ===

для преобразования столбца в строку

SELECT DISTINCT ReportingDate INTO #Dates  
FROM EmployeesAttendance  
ORDER BY ReportingDate  
DECLARE @cols NVARCHAR(4000)  
SELECT @cols = COALESCE(@cols + ',[' + CONVERT(varchar, DATEPART(DAY, ReportingDate), 112)  
+ ']','[' + CONVERT(varchar,DATEPART(DAY, ReportingDate), 112) + ']')  
FROM #Dates  
ORDER BY ReportingDate  
DECLARE @qry NVARCHAR(4000) =  
N'SELECT *  
FROM (SElECT EmployeeDetails.EmpID,EmployeeDetails.EmpName,EmployeesAttendance.Status,  
DATEPART(DAY, EmployeesAttendance.ReportingDate)as DDate  
FROM EmployeesAttendance Inner Join EmployeeDetails on EmployeesAttendance.EmpID=EmployeeDetails.Empid )  
emp  
PIVOT (MAX(Status) FOR DDate IN (' + @cols + ')) AS stat  

- Выполнение запроса
EXEC (@qry)

Я хочу этот регистр посещаемости сотрудника.

Date   1  2  3  4   5   Total  Absent Present Leave 
Emp1   P  P  A  PL  P    5       1      3      1
Emp2   Cl  pl A  PL  P    5       1      2      2 

Теперь я хочу объединить вышеуказанный запрос сумм и сводок, также упоминавшийсяоставьте тип в реестре посещаемости, если сотруднику предоставлен отпуск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...