ALTER PROC [dbo].[sp_ReportQueryByProject] @projectId NVARCHAR(50), @startTime DATETIME = NULL, @endTime DATETIME = NULL, @material NVARCHAR(50)=NULL --------------按项目统计--------------------------------- AS SELECT project.ProjectId,project.ProjectCode, ISNULL(total.TotalJot,0) AS TotalJot,ISNULL(total.TotalDin,0) AS TotalDin, ISNULL(weldedJot.weldedJot,0) AS weldedJot,ISNULL(weldedJot.weldedDin,0) AS weldedDin, CAST((CASE WHEN (ISNULL(total.TotalJot,0))>0 THEN 100.0 * (ISNULL(weldedJot.weldedJot,0))/(1.0 * ISNULL(total.TotalJot,0)) ELSE 0 END) AS DECIMAL(9,2)) AS WeldedRate, --焊接完成比例 ISNULL(oneCheck.OneCheckJotNum,0) AS OneCheckJotNum,ISNULL(oneCheckRepair.OneCheckRepairJotNum,0) AS OneCheckRepairJotNum, CAST((CASE WHEN (ISNULL(oneCheck.OneCheckJotNum,0))>0 THEN 100.0 * (ISNULL(oneCheck.OneCheckJotNum,0)-ISNULL(oneCheckRepair.OneCheckRepairJotNum,0))/(1.0 * ISNULL(oneCheck.OneCheckJotNum,0)) ELSE 0 END) AS DECIMAL(9,2)) AS OneOKRate, --焊接一次合格率 ISNULL(needCheck.NeedCheckJotNum,0) AS NeedCheckJotNum, --应检测焊口数 ISNULL(checked.CheckedJotNum,0) AS CheckedJotNum, --已检测焊口数 CAST((CASE WHEN (ISNULL(needCheck.NeedCheckJotNum,0))>0 THEN 100.0 * (ISNULL(checked.CheckedJotNum,0))/(1.0 * ISNULL(needCheck.NeedCheckJotNum,0)) ELSE 0 END) AS DECIMAL(9,2)) AS CheckedRate, --检测完成比例 ISNULL(checkRepair.CheckRepairJotNum,0) AS CheckRepairJotNum, --返修焊口数 ISNULL(expandJot.OneExpandJotNum,0) AS OneExpandJotNum FROM dbo.Base_Project project LEFT JOIN (SELECT COUNT(*) TotalJot ,pipe.ProjectId ,SUM(jot.Size) AS TotalDin FROM dbo.HJGL_WeldJoint jot LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId GROUP BY pipe.ProjectId) AS total ON total.ProjectId = project.ProjectId LEFT JOIN (SELECT COUNT(*) weldedJot ,pipe.ProjectId ,SUM(jot.Size) AS weldedDin FROM dbo.HJGL_WeldJoint jot LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId WHERE jot.WeldingDailyId is not NULL AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY pipe.ProjectId) AS weldedJot ON weldedJot.ProjectId = project.ProjectId LEFT JOIN (SELECT point.ProjectId,COUNT(ndeItem.NDEItemID) AS OneCheckJotNum --一次检测焊口数 FROM dbo.HJGL_Batch_NDEItem ndeItem LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE pointItem.PointState=1 AND trustItem.RepairRecordId IS NULL AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY point.ProjectId) AS oneCheck ON oneCheck.ProjectId = project.ProjectId LEFT JOIN (SELECT point.ProjectId,COUNT(ndeItem.NDEItemID) AS OneCheckRepairJotNum --一次检测返修焊口数 FROM dbo.HJGL_Batch_NDEItem ndeItem LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE pointItem.PointDate IS NOT NULL AND pointItem.PointState=1 AND trustItem.RepairRecordId IS NULL AND ndeItem.CheckResult='2' AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY point.ProjectId) AS oneCheckRepair ON oneCheckRepair.ProjectId = project.ProjectId LEFT JOIN (SELECT point.ProjectId,COUNT(ndeItem.NDEItemID) AS CheckRepairJotNum --返修焊口数 FROM dbo.HJGL_Batch_NDEItem ndeItem LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE pointItem.PointDate IS NOT NULL AND trustItem.RepairRecordId IS NULL AND ndeItem.CheckResult='2' AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY point.ProjectId) AS checkRepair ON checkRepair.ProjectId = project.ProjectId LEFT JOIN (SELECT point.ProjectId,COUNT(pointItem.PointBatchItemId) AS OneExpandJotNum --扩透焊口数 FROM dbo.HJGL_Batch_PointBatchItem pointItem LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE pointItem.PointState=2 AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY point.ProjectId) AS expandJot ON expandJot.ProjectId = project.ProjectId LEFT JOIN (SELECT jot.ProjectId,COUNT(pointItem.PointBatchItemId) AS NeedCheckJotNum --应检测焊口数 FROM dbo.HJGL_Batch_PointBatchItem pointItem LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId WHERE pointItem.PointState is not null and (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY jot.ProjectId) AS needCheck ON needCheck.ProjectId = project.ProjectId LEFT JOIN (SELECT jot.ProjectId,COUNT(ndeItem.NDEItemID) AS CheckedJotNum --已检测焊口数 FROM dbo.HJGL_Batch_NDEItem ndeItem LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId WHERE (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY jot.ProjectId) AS checked ON checked.ProjectId = project.ProjectId WHERE project.ProjectId=@projectId GO ALTER PROC [dbo].[sp_ReportQueryByPipeLine] @projectId NVARCHAR(50), @pipeLineId NVARCHAR(50), @startTime DATETIME = NULL, @endTime DATETIME = NULL, @material NVARCHAR(50)=NULL --------------按管线查询统计--------------------------------- AS SELECT pipeLine.PipelineId,pipeLine.PipelineCode, ISNULL(total.TotalJot,0) AS TotalJot,ISNULL(total.TotalDin,0) AS TotalDin, ISNULL(weldedJot.weldedJot,0) AS weldedJot,ISNULL(weldedJot.weldedDin,0) AS weldedDin, CAST((CASE WHEN (ISNULL(total.TotalJot,0))>0 THEN 100.0 * (ISNULL(weldedJot.weldedJot,0))/(1.0 * ISNULL(total.TotalJot,0)) ELSE 0 END) AS DECIMAL(9,2)) AS WeldedRate, --焊接完成比例 ISNULL(oneCheck.OneCheckJotNum,0) AS OneCheckJotNum,ISNULL(oneCheckRepair.OneCheckRepairJotNum,0) AS OneCheckRepairJotNum, CAST((CASE WHEN (ISNULL(oneCheck.OneCheckJotNum,0))>0 THEN 100.0 * (ISNULL(oneCheck.OneCheckJotNum,0)-ISNULL(oneCheckRepair.OneCheckRepairJotNum,0))/(1.0 * ISNULL(oneCheck.OneCheckJotNum,0)) ELSE 0 END) AS DECIMAL(9,2)) AS OneOKRate, --焊接一次合格率 ISNULL(needCheck.NeedCheckJotNum,0) AS NeedCheckJotNum, --应检测焊口数 ISNULL(checked.CheckedJotNum,0) AS CheckedJotNum, --已检测焊口数 CAST((CASE WHEN (ISNULL(needCheck.NeedCheckJotNum,0))>0 THEN 100.0 * (ISNULL(checked.CheckedJotNum,0))/(1.0 * ISNULL(needCheck.NeedCheckJotNum,0)) ELSE 0 END) AS DECIMAL(9,2)) AS CheckedRate, --检测完成比例 ISNULL(checkRepair.CheckRepairJotNum,0) AS CheckRepairJotNum, --返修焊口数 ISNULL(expandJot.OneExpandJotNum,0) AS OneExpandJotNum FROM dbo.HJGL_Pipeline pipeLine LEFT JOIN (SELECT COUNT(*) TotalJot ,pipe.PipelineId ,SUM(jot.Size) AS TotalDin FROM dbo.HJGL_WeldJoint jot LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId GROUP BY pipe.PipelineId) AS total ON total.PipelineId = pipeLine.PipelineId LEFT JOIN (SELECT COUNT(*) weldedJot ,pipe.PipelineId ,SUM(jot.Size) AS weldedDin FROM dbo.HJGL_WeldJoint jot LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId WHERE jot.WeldingDailyId is not NULL AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY pipe.PipelineId) AS weldedJot ON weldedJot.PipelineId = pipeLine.PipelineId LEFT JOIN (SELECT jot.PipelineId,COUNT(ndeItem.NDEItemID) AS OneCheckJotNum --一次检测焊口数 FROM dbo.HJGL_Batch_NDEItem ndeItem LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE pointItem.PointState=1 AND trustItem.RepairRecordId IS NULL AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY jot.PipelineId) AS oneCheck ON oneCheck.PipelineId = pipeLine.PipelineId LEFT JOIN (SELECT jot.PipelineId,COUNT(ndeItem.NDEItemID) AS OneCheckRepairJotNum --一次检测返修焊口数 FROM dbo.HJGL_Batch_NDEItem ndeItem LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE pointItem.PointDate IS NOT NULL AND pointItem.PointState=1 AND trustItem.RepairRecordId IS NULL AND ndeItem.CheckResult='2' AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY jot.PipelineId) AS oneCheckRepair ON oneCheckRepair.PipelineId = pipeLine.PipelineId LEFT JOIN (SELECT jot.PipelineId,COUNT(ndeItem.NDEItemID) AS CheckRepairJotNum --返修焊口数 FROM dbo.HJGL_Batch_NDEItem ndeItem LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE pointItem.PointDate IS NOT NULL AND trustItem.RepairRecordId IS NULL AND ndeItem.CheckResult='2' AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY jot.PipelineId) AS checkRepair ON checkRepair.PipelineId = pipeLine.PipelineId LEFT JOIN (SELECT jot.PipelineId,COUNT(pointItem.PointBatchItemId) AS OneExpandJotNum --扩透焊口数 FROM dbo.HJGL_Batch_PointBatchItem pointItem LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE pointItem.PointState=2 AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY jot.PipelineId) AS expandJot ON expandJot.PipelineId = pipeLine.PipelineId LEFT JOIN (SELECT jot.PipelineId,COUNT(pointItem.PointBatchItemId) AS NeedCheckJotNum --应检测焊口数 FROM dbo.HJGL_Batch_PointBatchItem pointItem LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId WHERE pointItem.PointState is not null and (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY jot.PipelineId) AS needCheck ON needCheck.PipelineId = pipeLine.PipelineId LEFT JOIN (SELECT jot.PipelineId,COUNT(ndeItem.NDEItemID) AS CheckedJotNum --已检测焊口数 FROM dbo.HJGL_Batch_NDEItem ndeItem LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId WHERE (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY jot.PipelineId) AS checked ON checked.PipelineId = pipeLine.PipelineId WHERE pipeLine.ProjectId=@projectId AND pipeLine.PipelineId=@pipeLineId GO ALTER PROC [dbo].[sp_ReportQueryByUnit] @projectId NVARCHAR(50), @unitId NVARCHAR(50), @startTime DATETIME = NULL, @endTime DATETIME = NULL, @material NVARCHAR(50)=NULL --------------按单位统计--------------------------------- AS SELECT punit.UnitId,unit.UnitCode,unit.UnitName, ISNULL(total.TotalJot,0) AS TotalJot,ISNULL(total.TotalDin,0) AS TotalDin, ISNULL(weldedJot.weldedJot,0) AS weldedJot,ISNULL(weldedJot.weldedDin,0) AS weldedDin, CAST((CASE WHEN (ISNULL(total.TotalJot,0))>0 THEN 100.0 * (ISNULL(weldedJot.weldedJot,0))/(1.0 * ISNULL(total.TotalJot,0)) ELSE 0 END) AS DECIMAL(9,2)) AS WeldedRate, --焊接完成比例 ISNULL(oneCheck.OneCheckJotNum,0) AS OneCheckJotNum,ISNULL(oneCheckRepair.OneCheckRepairJotNum,0) AS OneCheckRepairJotNum, CAST((CASE WHEN (ISNULL(oneCheck.OneCheckJotNum,0))>0 THEN 100.0 * (ISNULL(oneCheck.OneCheckJotNum,0)-ISNULL(oneCheckRepair.OneCheckRepairJotNum,0))/(1.0 * ISNULL(oneCheck.OneCheckJotNum,0)) ELSE 0 END) AS DECIMAL(9,2)) AS OneOKRate, --焊接一次合格率 ISNULL(needCheck.NeedCheckJotNum,0) AS NeedCheckJotNum, --应检测焊口数 ISNULL(checked.CheckedJotNum,0) AS CheckedJotNum, --已检测焊口数 CAST((CASE WHEN (ISNULL(needCheck.NeedCheckJotNum,0))>0 THEN 100.0 * (ISNULL(checked.CheckedJotNum,0))/(1.0 * ISNULL(needCheck.NeedCheckJotNum,0)) ELSE 0 END) AS DECIMAL(9,2)) AS CheckedRate, --检测完成比例 ISNULL(checkRepair.CheckRepairJotNum,0) AS CheckRepairJotNum, --返修焊口数 ISNULL(expandJot.OneExpandJotNum,0) AS OneExpandJotNum FROM dbo.Project_ProjectUnit punit LEFT JOIN dbo.Base_Unit unit ON unit.UnitId = punit.UnitId LEFT JOIN (SELECT COUNT(*) TotalJot ,pipe.UnitId ,SUM(jot.Size) AS TotalDin FROM dbo.HJGL_WeldJoint jot LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId GROUP BY pipe.UnitId) AS total ON total.UnitId = punit.UnitId LEFT JOIN (SELECT COUNT(*) weldedJot ,pipe.UnitId ,SUM(jot.Size) AS weldedDin FROM dbo.HJGL_WeldJoint jot LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId WHERE jot.WeldingDailyId is not NULL AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY pipe.UnitId) AS weldedJot ON weldedJot.UnitId = punit.UnitId LEFT JOIN (SELECT point.UnitId,COUNT(ndeItem.NDEItemID) AS OneCheckJotNum --一次检测焊口数 FROM dbo.HJGL_Batch_NDEItem ndeItem LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE pointItem.PointState=1 AND trustItem.RepairRecordId IS NULL AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY point.UnitId) AS oneCheck ON oneCheck.UnitId = punit.UnitId LEFT JOIN (SELECT point.UnitId,COUNT(ndeItem.NDEItemID) AS OneCheckRepairJotNum --一次检测返修焊口数 FROM dbo.HJGL_Batch_NDEItem ndeItem LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE pointItem.PointDate IS NOT NULL AND pointItem.PointState=1 AND trustItem.RepairRecordId IS NULL AND ndeItem.CheckResult='2' AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY point.UnitId) AS oneCheckRepair ON oneCheckRepair.UnitId = punit.UnitId LEFT JOIN (SELECT point.UnitId,COUNT(ndeItem.NDEItemID) AS CheckRepairJotNum --返修焊口数 FROM dbo.HJGL_Batch_NDEItem ndeItem LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE pointItem.PointDate IS NOT NULL AND trustItem.RepairRecordId IS NULL AND ndeItem.CheckResult='2' AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY point.UnitId) AS checkRepair ON checkRepair.UnitId = punit.UnitId LEFT JOIN (SELECT point.UnitId,COUNT(pointItem.PointBatchItemId) AS OneExpandJotNum --扩透焊口数 FROM dbo.HJGL_Batch_PointBatchItem pointItem LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE pointItem.PointState=2 AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY point.UnitId) AS expandJot ON expandJot.UnitId = punit.UnitId LEFT JOIN (SELECT point.UnitId,COUNT(pointItem.PointBatchItemId) AS NeedCheckJotNum --应检测焊口数 FROM dbo.HJGL_Batch_PointBatchItem pointItem LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId WHERE pointItem.PointState is not null and (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY point.UnitId) AS needCheck ON needCheck.UnitId = punit.UnitId LEFT JOIN (SELECT point.UnitId,COUNT(ndeItem.NDEItemID) AS CheckedJotNum --已检测焊口数 FROM dbo.HJGL_Batch_NDEItem ndeItem LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY point.UnitId) AS checked ON checked.UnitId = punit.UnitId WHERE punit.ProjectId=@projectId AND punit.UnitId=@unitId AND punit.UnitType='2' GO ALTER PROC [dbo].[sp_ReportQueryByUnitWork] @projectId NVARCHAR(50), @unitWorkId NVARCHAR(50), @startTime DATETIME = NULL, @endTime DATETIME = NULL, @material NVARCHAR(50)=NULL --------------按单位工程统计--------------------------------- AS SELECT unitWork.UnitWorkId,unitWork.UnitWorkCode,unitWork.ProjectId, ISNULL(total.TotalJot,0) AS TotalJot,ISNULL(total.TotalDin,0) AS TotalDin, ISNULL(weldedJot.weldedJot,0) AS weldedJot,ISNULL(weldedJot.weldedDin,0) AS weldedDin, CAST((CASE WHEN (ISNULL(total.TotalJot,0))>0 THEN 100.0 * (ISNULL(weldedJot.weldedJot,0))/(1.0 * ISNULL(total.TotalJot,0)) ELSE 0 END) AS DECIMAL(9,2)) AS WeldedRate, --焊接完成比例 ISNULL(oneCheck.OneCheckJotNum,0) AS OneCheckJotNum,ISNULL(oneCheckRepair.OneCheckRepairJotNum,0) AS OneCheckRepairJotNum, CAST((CASE WHEN (ISNULL(oneCheck.OneCheckJotNum,0))>0 THEN 100.0 * (ISNULL(oneCheck.OneCheckJotNum,0)-ISNULL(oneCheckRepair.OneCheckRepairJotNum,0))/(1.0 * ISNULL(oneCheck.OneCheckJotNum,0)) ELSE 0 END) AS DECIMAL(9,2)) AS OneOKRate, --焊接一次合格率 ISNULL(needCheck.NeedCheckJotNum,0) AS NeedCheckJotNum, --应检测焊口数 ISNULL(checked.CheckedJotNum,0) AS CheckedJotNum, --已检测焊口数 CAST((CASE WHEN (ISNULL(needCheck.NeedCheckJotNum,0))>0 THEN 100.0 * (ISNULL(checked.CheckedJotNum,0))/(1.0 * ISNULL(needCheck.NeedCheckJotNum,0)) ELSE 0 END) AS DECIMAL(9,2)) AS CheckedRate, --检测完成比例 ISNULL(checkRepair.CheckRepairJotNum,0) AS CheckRepairJotNum, --返修焊口数 ISNULL(expandJot.OneExpandJotNum,0) AS OneExpandJotNum FROM dbo.WBS_UnitWork unitWork LEFT JOIN (SELECT COUNT(*) TotalJot ,pipe.UnitWorkId ,SUM(jot.Size) AS TotalDin FROM dbo.HJGL_WeldJoint jot LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId GROUP BY pipe.UnitWorkId) AS total ON total.UnitWorkId = unitWork.UnitWorkId LEFT JOIN (SELECT COUNT(*) weldedJot ,pipe.UnitWorkId ,SUM(jot.Size) AS weldedDin FROM dbo.HJGL_WeldJoint jot LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId WHERE jot.WeldingDailyId is not NULL AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY pipe.UnitWorkId) AS weldedJot ON weldedJot.UnitWorkId = unitWork.UnitWorkId LEFT JOIN (SELECT point.UnitWorkId,COUNT(ndeItem.NDEItemID) AS OneCheckJotNum --一次检测焊口数 FROM dbo.HJGL_Batch_NDEItem ndeItem LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE pointItem.PointState=1 AND trustItem.RepairRecordId IS NULL AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY point.UnitWorkId) AS oneCheck ON oneCheck.UnitWorkId = unitWork.UnitWorkId LEFT JOIN (SELECT point.UnitWorkId,COUNT(ndeItem.NDEItemID) AS OneCheckRepairJotNum --一次检测返修焊口数 FROM dbo.HJGL_Batch_NDEItem ndeItem LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE pointItem.PointDate IS NOT NULL AND pointItem.PointState=1 AND trustItem.RepairRecordId IS NULL AND ndeItem.CheckResult='2' AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY point.UnitWorkId) AS oneCheckRepair ON oneCheckRepair.UnitWorkId = unitWork.UnitWorkId LEFT JOIN (SELECT point.UnitWorkId,COUNT(ndeItem.NDEItemID) AS CheckRepairJotNum --返修焊口数 FROM dbo.HJGL_Batch_NDEItem ndeItem LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE pointItem.PointDate IS NOT NULL AND trustItem.RepairRecordId IS NULL AND ndeItem.CheckResult='2' AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY point.UnitWorkId) AS checkRepair ON checkRepair.UnitWorkId = unitWork.UnitWorkId LEFT JOIN (SELECT point.UnitWorkId,COUNT(pointItem.PointBatchItemId) AS OneExpandJotNum --扩透焊口数 FROM dbo.HJGL_Batch_PointBatchItem pointItem LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE pointItem.PointState=2 AND (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY point.UnitWorkId) AS expandJot ON expandJot.UnitWorkId = unitWork.UnitWorkId LEFT JOIN (SELECT point.UnitWorkId,COUNT(pointItem.PointBatchItemId) AS NeedCheckJotNum --应检测焊口数 FROM dbo.HJGL_Batch_PointBatchItem pointItem LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId WHERE pointItem.PointState is not null and (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY point.UnitWorkId) AS needCheck ON needCheck.UnitWorkId = unitWork.UnitWorkId LEFT JOIN (SELECT point.UnitWorkId,COUNT(ndeItem.NDEItemID) AS CheckedJotNum --已检测焊口数 FROM dbo.HJGL_Batch_NDEItem ndeItem LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId WHERE (daily.WeldingDate >= @startTime OR @startTime IS NULL) AND (daily.WeldingDate <= @endTime OR @endTime IS NULL) AND (jot.Material1Id=@material OR @material IS NULL) GROUP BY point.UnitWorkId) AS checked ON checked.UnitWorkId = unitWork.UnitWorkId WHERE unitWork.ProjectId=@projectId AND unitWork.UnitWorkId=@unitWorkId GO alter table PHTGL_ActionPlanFormation add BidProject nvarchar(100) alter table PHTGL_ActionPlanFormation add BidType nvarchar(100) alter table PHTGL_ActionPlanFormation add PriceType nvarchar(100) alter table PHTGL_ActionPlanFormation add BidPrice nvarchar(100) alter table PHTGL_Contract add IsPassBid nvarchar(50) alter table PHTGL_Contract add PassBidCode nvarchar(50) alter table sys_user add DataFrom nvarchar(100)