ALTER TABLE Welder_TestApplication ADD OwnerNum NVARCHAR(50) GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'业主编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Welder_TestApplication', @level2type=N'COLUMN',@level2name=N'OwnerNum' GO ALTER TABLE [dbo].[Welder_TestApplication] WITH CHECK ADD CONSTRAINT [FK_Welder_TestApplication_Sys_User] FOREIGN KEY([ConUnitWeldingEngineer]) REFERENCES [dbo].[Sys_User] ([UserId]) GO ALTER TABLE [dbo].[Welder_TestApplication] CHECK CONSTRAINT [FK_Welder_TestApplication_Sys_User] GO insert into Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) values('7CA6A244-F397-47E1-9A8A-E19489D983DA','焊工动态统计表','HJGL/WeldingReport/WelderDynamicStatistics.aspx',190,'F3B157B7-9BEE-4150-80CB-087828F1C51D','Menu_HJGL',0,1,1) GO CREATE PROC [dbo].[sp_rpt_WelderDynamicStatistics] @projectId NVARCHAR(50) = NULL, @unitId NVARCHAR(50)=NULL AS /********焊工动态统计表***********/ SELECT unit.UnitId, unit.UnitName, projectUnit.ProjectId, ISNULL(total_count.total_count,0) AS total_count,--报考总人数 ISNULL(PD_wait_exam.PD_wait_exam_count,0) AS PD_wait_exam_count,--管道(人数)待考试 ISNULL(PD_qualified_duty.PD_qualified_duty_count,0) AS PD_qualified_duty_count, --管道(人数)合格在岗 ISNULl(PD_qualified_leave.PD_qualified_leave_count,0) AS PD_qualified_leave_count, --管道(人数) 合格离岗 ISNULL(FE_wait_exam.FE_wait_exam_count,0) AS FE_wait_exam_count,--设备(人数)待考试 ISNULL(FE_qualified_duty.FE_qualified_duty_count,0) AS FE_qualified_duty_count,--设备(人数)合格在岗 ISNULL(FE_qualified_leave.FE_qualified_leave_count,0) AS FE_qualified_leave_count,--设备(人数)合格离岗 ISNULL(JG_wait_exam.JG_wait_exam_count,0) AS JG_wait_exam_count,--钢结构(人数)待考试 ISNULL(JG_qualified_duty.JG_qualified_duty_count,0) AS JG_qualified_duty_count,--钢机构(人数)合格在岗 ISNULl(JG_qualified_leave.JG_qualified_leave_count,0) AS JG_qualified_leave_count,--钢结构(人数)合格离岗 ISNULL(TJ_wait_exam.TJ_wait_exam_count,0) AS TJ_wait_exam_count,--土建(人数)待考试 ISNULl(TJ_qualified_duty.TJ_qualified_duty_count,0) AS TJ_qualified_duty_count,--土建(人数)合格在岗 ISNULL(TJ_qualified_leave.TJ_qualified_leave_count,0) AS TJ_qualified_leave_count --土建(人数)合格离岗 FROM Base_Unit AS unit LEFT JOIN Project_ProjectUnit AS projectUnit ON projectUnit.UnitId = unit.UnitId --报考总人数 LEFT JOIN (SELECT COUNT(*) AS total_count,ProjectId,ConUnit FROM Welder_TestApplication GROUP BY ProjectId,ConUnit) AS total_count ON total_count.ConUnit = unit.UnitId and total_count.ProjectId=projectUnit.ProjectId --管道(人数) 待考试 LEFT JOIN (SELECT COUNT(*) AS PD_wait_exam_count,ProjectId,ConUnit FROM Welder_TestApplication WHERE Welder_TestApplication.WelderClass='管道' AND Welder_TestApplication.WelderCondition='待考试' GROUP BY ProjectId,ConUnit) AS PD_wait_exam ON PD_wait_exam.ConUnit = unit.UnitId and PD_wait_exam.ProjectId=projectUnit.ProjectId --管道(人数) 合格在岗 LEFT JOIN (SELECT COUNT(*) AS PD_qualified_duty_count,ProjectId,ConUnit FROM Welder_TestApplication WHERE Welder_TestApplication.WelderClass='管道' AND Welder_TestApplication.WelderCondition='合格在岗' GROUP BY ProjectId,ConUnit) AS PD_qualified_duty ON PD_qualified_duty.ConUnit = unit.UnitId and PD_qualified_duty.ProjectId=projectUnit.ProjectId --管道(人数) 合格离岗 LEFT JOIN (SELECT COUNT(*) AS PD_qualified_leave_count,ProjectId,ConUnit FROM Welder_TestApplication WHERE Welder_TestApplication.WelderClass='管道' AND Welder_TestApplication.WelderCondition='合格离岗' GROUP BY ProjectId,ConUnit) AS PD_qualified_leave ON PD_qualified_leave.ConUnit = unit.UnitId and PD_qualified_leave.ProjectId=projectUnit.ProjectId --设备(人数) 待考试 LEFT JOIN (SELECT COUNT(*) AS FE_wait_exam_count,ProjectId,ConUnit FROM Welder_TestApplication WHERE Welder_TestApplication.WelderClass='设备' AND Welder_TestApplication.WelderCondition='待考试' GROUP BY ProjectId,ConUnit) AS FE_wait_exam ON FE_wait_exam.ConUnit = unit.UnitId and FE_wait_exam.ProjectId=projectUnit.ProjectId --设备(人数) 合格在岗 LEFT JOIN (SELECT COUNT(*) AS FE_qualified_duty_count,ProjectId,ConUnit FROM Welder_TestApplication WHERE Welder_TestApplication.WelderClass='设备' AND Welder_TestApplication.WelderCondition='合格在岗' GROUP BY ProjectId,ConUnit) AS FE_qualified_duty ON FE_qualified_duty.ConUnit = unit.UnitId and FE_qualified_duty.ProjectId=projectUnit.ProjectId --设备(人数) 合格离岗 LEFT JOIN (SELECT COUNT(*) AS FE_qualified_leave_count,ProjectId,ConUnit FROM Welder_TestApplication WHERE Welder_TestApplication.WelderClass='设备' AND Welder_TestApplication.WelderCondition='合格离岗' GROUP BY ProjectId,ConUnit) AS FE_qualified_leave ON FE_qualified_leave.ConUnit = unit.UnitId and FE_qualified_leave.ProjectId=projectUnit.ProjectId --钢结构(人数) 待考试 LEFT JOIN (SELECT COUNT(*) AS JG_wait_exam_count,ProjectId,ConUnit FROM Welder_TestApplication WHERE Welder_TestApplication.WelderClass='结构' AND Welder_TestApplication.WelderCondition='待考试' GROUP BY ProjectId,ConUnit) AS JG_wait_exam ON JG_wait_exam.ConUnit = unit.UnitId and JG_wait_exam.ProjectId=projectUnit.ProjectId --钢结构(人数) 合格在岗 LEFT JOIN (SELECT COUNT(*) AS JG_qualified_duty_count,ProjectId,ConUnit FROM Welder_TestApplication WHERE Welder_TestApplication.WelderClass='结构' AND Welder_TestApplication.WelderCondition='合格在岗' GROUP BY ProjectId,ConUnit) AS JG_qualified_duty ON JG_qualified_duty.ConUnit = unit.UnitId and JG_qualified_duty.ProjectId=projectUnit.ProjectId --钢结构(人数) 合格离岗 LEFT JOIN (SELECT COUNT(*) AS JG_qualified_leave_count,ProjectId,ConUnit FROM Welder_TestApplication WHERE Welder_TestApplication.WelderClass='结构' AND Welder_TestApplication.WelderCondition='合格离岗' GROUP BY ProjectId,ConUnit) AS JG_qualified_leave ON JG_qualified_leave.ConUnit = unit.UnitId and JG_qualified_leave.ProjectId=projectUnit.ProjectId --土建(人数) 待考试 LEFT JOIN (SELECT COUNT(*) AS TJ_wait_exam_count,ProjectId,ConUnit FROM Welder_TestApplication WHERE Welder_TestApplication.WelderClass='土建' AND Welder_TestApplication.WelderCondition='待考试' GROUP BY ProjectId,ConUnit) AS TJ_wait_exam ON TJ_wait_exam.ConUnit = unit.UnitId and TJ_wait_exam.ProjectId=projectUnit.ProjectId --土建(人数) 合格在岗 LEFT JOIN (SELECT COUNT(*) AS TJ_qualified_duty_count,ProjectId,ConUnit FROM Welder_TestApplication WHERE Welder_TestApplication.WelderClass='土建' AND Welder_TestApplication.WelderCondition='合格在岗' GROUP BY ProjectId,ConUnit) AS TJ_qualified_duty ON TJ_qualified_duty.ConUnit = unit.UnitId and TJ_qualified_duty.ProjectId=projectUnit.ProjectId --土建(人数) 合格离岗 LEFT JOIN (SELECT COUNT(*) AS TJ_qualified_leave_count,ProjectId,ConUnit FROM Welder_TestApplication WHERE Welder_TestApplication.WelderClass='土建' AND Welder_TestApplication.WelderCondition='合格离岗' GROUP BY ProjectId,ConUnit) AS TJ_qualified_leave ON TJ_qualified_leave.ConUnit = unit.UnitId and TJ_qualified_leave.ProjectId=projectUnit.ProjectId WHERE projectUnit.UnitType='2' AND(projectUnit.ProjectId=@projectId OR @projectId IS NULL) AND (unit.UnitId=@unitId OR @unitId IS NULL) GO