36 lines
3.0 KiB
Transact-SQL
36 lines
3.0 KiB
Transact-SQL
|
||
|
||
|
||
ALTER PROC [dbo].[spInOutManHoursReport]
|
||
@projectId NVARCHAR(50),
|
||
@unitId NVARCHAR(max)= NULL,
|
||
@postId NVARCHAR(max)= NULL,
|
||
@startTime DATETIME = NULL,
|
||
@endTime DATETIME = NULL
|
||
AS
|
||
/*****************单位考勤****************/
|
||
SELECT CAST(NEWID() AS NVARCHAR(100)) AS ID
|
||
,P.ProjectId
|
||
,p.UnitId
|
||
,ISNULL((case when u.UnitName=''then null else u.UnitName end),'未知') AS UnitName
|
||
,p.WorkPostId as PostId
|
||
,ISNULL((case when W.WorkPostName=''then null else W.WorkPostName end),'未知') AS PostName
|
||
,SUM(ISNULL(ManHours,0)) AS ManHoursSum
|
||
,COUNT( distinct IDCardNo) AS ManCountSum
|
||
,COUNT( distinct PersonId) AS PersonCountSum
|
||
FROM dbo.SitePerson_Person AS P
|
||
LEFT JOIN ( select ProjectId,IDCardNo,SUM(ISNULL(ManHours,0)) ManHours from t_d_EmployInOutRecord where ( RecordDate >= @startTime OR @startTime IS NULL)
|
||
AND ( RecordDate <= @endTime OR @endTime IS NULL)
|
||
group by ProjectId,IDCardNo) T ON P.ProjectId=T.ProjectId AND T.IDCardNo=P.IdentityCard
|
||
LEFT JOIN dbo.Base_Unit AS U ON P.UnitId=U.UnitId
|
||
LEFT JOIN dbo.ProjectData_TeamGroup AS Team ON P.TeamGroupId=Team.TeamGroupId
|
||
LEFT JOIN dbo.Base_WorkPost AS W ON P.WorkPostId=W.WorkPostId
|
||
WHERE P.ProjectId = @ProjectId and P.InTime <=GETDATE() and ( P.OutTime is null or P.OutTime > GETDATE())
|
||
AND (@unitId like '%'+P.UnitId+'%' OR @unitId IS NULL)
|
||
AND (@postId like '%'+P.WorkPostId+'%' OR @postId IS NULL)
|
||
GROUP BY P.ProjectId,P.UnitId,U.UnitName,P.WorkPostId,W.WorkPostName
|
||
|
||
|
||
|
||
|