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 ,T.ProjectId ,T.UnitId ,ISNULL((case when T.UnitId=''then null else (case when u.ShortUnitName IS NOT NULL THEN u.ShortUnitName ELSE u.UnitName END) end),'未知') AS UnitName ,ISNULL((case when T.UnitId=''then null else u.UnitName end),'未知') AS AllUnitName ,T.PostId ,ISNULL((case when W.WorkPostName=''then null else W.WorkPostName end),'未知') AS PostName ,SUM(ISNULL(ManHours,0)) AS ManHoursSum ,COUNT(T.NewID) AS ManCountSum ,(SELECT COUNT(PersonId) FROM SitePerson_Person WHERE ProjectId = T.ProjectId AND T.UnitId=UnitId AND T.PostId=WorkPostId AND IsUsed=1 AND OutTime IS NOT NULL group by ProjectId,UnitId,WorkPostId) AS PersonCountSum FROM dbo.t_d_EmployInOutRecord AS T --LEFT JOIN dbo.SitePerson_Person AS P ON T.ProjectId=P.ProjectId AND T.IDCardNo=P.IdentityCard LEFT JOIN dbo.Base_Unit AS U ON T.UnitId=U.UnitId --LEFT JOIN dbo.ProjectData_TeamGroup AS Team ON P.TeamGroupId=Team.TeamGroupId LEFT JOIN dbo.Base_WorkPost AS W ON T.PostId=W.WorkPostId WHERE T.ProjectId = @ProjectId AND (RecordDate >= @startTime OR @startTime IS NULL) AND (RecordDate <= @endTime OR @endTime IS NULL) AND (@unitId like '%'+T.UnitId+'%' OR @unitId IS NULL) AND (@postId like '%'+T.PostId+'%' OR @postId IS NULL) GROUP BY T.ProjectId,T.UnitId,U.UnitName,u.ShortUnitName,T.PostId,W.WorkPostName GO