ALTER PROCEDURE [dbo].[SpCheckDayStatistic] @ProjectId NVARCHAR(50), @StartTime NVARCHAR(15)=NULL, @EndTime NVARCHAR(15)=NULL, @States CHAR(1)=NULL, @UnitName NVARCHAR(200)=NULL, @WorkAreaName NVARCHAR(200)=NULL AS /*日常巡检检查*/ BEGIN SELECT CheckDayDetail.CheckDayDetailId ,CheckDay.CheckDayId ,CheckDay.CheckDayId+','+ISNULL(CheckDayDetail.CheckDayDetailId,'') AS NewChcekId ,CodeRecords.Code AS CheckDayCode ,ISNULL(Checks.CheckCount,0) AS CheckCount ,CheckDayDetail.WorkArea ,Unit.UnitName ,CheckDayDetail.CompleteStatus ,(CASE WHEN CheckDayDetail.CompleteStatus=1 THEN '已完成' ELSE '' END) AS CompleteStatusName ,CONVERT(VARCHAR(100), CheckDayDetail.LimitedDate, 23) AS LimitedDate ,CheckDayDetail.CompletedDate ,CheckDay.CheckPerson ,CONVERT(VARCHAR(100), CheckDay.CheckTime, 23) AS CheckTime --,CheckDay.CheckTime ,CheckDayDetail.CheckItemType ,CheckDayDetail.CheckItem ,CheckDayDetail.HandleStep ,CheckDayDetail.Unqualified ,(CASE WHEN CheckDay.States='0' OR CheckDay.States IS NULL THEN '待['+ISNULL(OperateUser.UserName,Users.UserName)+']提交' WHEN CheckDay.States='2' THEN '审核/审批完成' ELSE '待['+OperateUser.UserName+']办理' END) AS FlowOperateName ,CheckPersonUsers.UserName AS CheckPersonName ,person.PersonName ,CheckDayDetail.HiddenDangerType ,CheckDayDetail.HiddenDangerLevel ,checkDayDetail.Suggestions FROM Check_CheckDay AS CheckDay LEFT JOIN Sys_CodeRecords AS CodeRecords ON CheckDay.CheckDayId=CodeRecords.DataId LEFT JOIN Check_CheckDayDetail AS CheckDayDetail ON CheckDayDetail.CheckDayId = CheckDay.CheckDayId AND CheckDayDetail.CheckDayDetailId IS NOT NULL --LEFT JOIN ProjectData_WorkArea AS WorkArea on WorkArea.WorkAreaId=CheckDayDetail.CheckArea LEFT JOIN Base_Unit AS Unit ON Unit.UnitId=CheckDayDetail.UnitId LEFT JOIN (SELECT COUNT(*) AS CheckCount, CheckDayId FROM Check_CheckDayDetail GROUP BY CheckDayId) AS Checks ON Checks.CheckDayId = CheckDay.CheckDayId LEFT JOIN Sys_FlowOperate AS FlowOperate ON CheckDay.CheckDayId=FlowOperate.DataId AND FlowOperate.IsClosed <> 1 LEFT JOIN Sys_User AS OperateUser ON FlowOperate.OperaterId=OperateUser.UserId LEFT JOIN Sys_User AS Users ON CheckDay.CompileMan=Users.UserId LEFT JOIN Sys_User AS CheckPersonUsers ON CheckDay.CheckPerson=CheckPersonUsers.UserId LEFT JOIN dbo.SitePerson_Person AS person ON person.PersonId = CheckDayDetail.PersonId WHERE (@StartTime IS NULL OR CheckDay.CheckTime>=@StartTime) AND (@EndTime IS NULL OR CheckDay.CheckTime <=@EndTime ) AND CheckDay.ProjectId=@ProjectId AND (@States IS NULL OR CheckDay.States=@States) AND (@UnitName IS NULL OR Unit.UnitName LIKE '%'+@UnitName+'%' ) AND (@WorkAreaName IS NULL OR CheckDayDetail.WorkArea LIKE '%'+@WorkAreaName+'%' ) ORDER BY CheckDayCode DESC END GO