姜永辉 8 месяцев назад
Родитель
Сommit
3ca6e737a5

+ 3 - 3
wwwroot/mes/rpt/rpt217/rpt.ashx

@@ -170,9 +170,9 @@ TO_CHAR(基础数据.工号) 工号,
                                         TO_CHAR(基础数据.釉色)釉色,
                                         TO_CHAR(基础数据.商标)商标,
                                         TO_CHAR(COUNT(DISTINCT productiondataid)) 出窑量,
-                                        TO_CHAR(COUNT(DISTINCT 基础数据.productiondataid) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4)  AND   (缺陷编码 IN(" + defectcode + ")"+@")THEN 基础数据.productiondataid ELSE NULL END )) 优级品量,
-                                        DECODE(NVL((COUNT( DISTINCT 基础数据.productiondataid ) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷编码 IN(" + defectcode + ")"+@") THEN 基础数据.productiondataid ELSE NULL END)),0),0,'0%',
-	                                    TO_CHAR((NVL((COUNT(DISTINCT 基础数据.productiondataid) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷编码 IN(" + defectcode + ")"+@")  THEN 基础数据.productiondataid ELSE NULL END ) ) ,0 ) / 
+                                        TO_CHAR(COUNT(DISTINCT 基础数据.productiondataid) - COUNT(DISTINCT CASE WHEN 缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid || 缺陷条码||缺陷ID ) ELSE NULL END )) 优级品量,
+                                        DECODE(NVL((COUNT( DISTINCT 基础数据.productiondataid ) - COUNT(DISTINCT CASE WHEN 缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid || 缺陷条码||缺陷ID ) ELSE NULL END)),0),0,'0%',
+	                                    TO_CHAR((NVL((COUNT(DISTINCT 基础数据.productiondataid) - COUNT(DISTINCT CASE WHEN 缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid || 缺陷条码||缺陷ID ) ELSE NULL END ) ) ,0 ) / 
 	                                    DECODE(NVL( COUNT( DISTINCT 基础数据.productiondataid ), 1 ),0,1,NVL( COUNT( DISTINCT 基础数据.productiondataid ), 1 ) ) ) * 100,'fm99990.00' ) || '%' ) AS 优级品率,
                                         TO_CHAR(COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid || 缺陷条码||缺陷ID ) ELSE NULL END )) 缺陷量,
                                         TO_CHAR( (COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid||缺陷条码||缺陷ID ) ELSE NULL END ) /COUNT(DISTINCT productiondataid) * 100), 'fm99990.00') || '%' 缺陷率,

+ 3 - 3
wwwroot/mes/rpt/rpt218/rpt.ashx

@@ -173,9 +173,9 @@ TO_CHAR(基础数据.工号) 工号,
                                         TO_CHAR(基础数据.釉色)釉色,
                                         TO_CHAR(基础数据.商标)商标,
                                         TO_CHAR(COUNT( DISTINCT 基础数据.productiondataid)) 出窑量,
-                                        TO_CHAR(COUNT(DISTINCT 基础数据.productiondataid) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4)  AND  (缺陷编码 IN(" + defectcode + ")" + @")THEN 基础数据.productiondataid ELSE NULL END )) 优级品量,
-                                        DECODE(NVL((COUNT( DISTINCT 基础数据.productiondataid ) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷编码 IN(" + defectcode + ")" + @") THEN 基础数据.productiondataid ELSE NULL END)),0),0,'0%',
-	                                    TO_CHAR((NVL((COUNT(DISTINCT 基础数据.productiondataid) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷编码 IN(" + defectcode + ")" + @")  THEN 基础数据.productiondataid ELSE NULL END ) ) ,0 ) / 
+                                        TO_CHAR(COUNT(DISTINCT 基础数据.productiondataid) - COUNT(DISTINCT CASE WHEN 缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid||缺陷条码||缺陷ID ) ELSE NULL END )) 优级品量,
+                                        DECODE(NVL((COUNT( DISTINCT 基础数据.productiondataid ) - COUNT(DISTINCT CASE WHEN 缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid||缺陷条码||缺陷ID ) ELSE NULL END)),0),0,'0%',
+	                                    TO_CHAR((NVL((COUNT(DISTINCT 基础数据.productiondataid) - COUNT(DISTINCT CASE WHEN 缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid||缺陷条码||缺陷ID ) ELSE NULL END ) ) ,0 ) / 
 	                                    DECODE(NVL( COUNT( DISTINCT 基础数据.productiondataid ), 1 ),0,1,NVL( COUNT( DISTINCT 基础数据.productiondataid ), 1 ) ) ) * 100,'fm99990.00' ) || '%' ) AS 优级品率,
                                          TO_CHAR(COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid||缺陷条码||缺陷ID ) ELSE NULL END )) 缺陷量,
                                         TO_CHAR( (COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid||缺陷条码||缺陷ID ) ELSE NULL END ) /COUNT(DISTINCT productiondataid) * 100), 'fm99990.00') || '%' 缺陷率,

+ 3 - 3
wwwroot/mes/rpt/rpt219/rpt.ashx

@@ -175,9 +175,9 @@ TO_CHAR(基础数据.工号) 工号,
                                         TO_CHAR(基础数据.釉色)釉色,
                                         TO_CHAR(基础数据.商标)商标,
                                         TO_CHAR(COUNT( DISTINCT 基础数据.productiondataid)) 出窑量,
-                                        TO_CHAR(COUNT(DISTINCT 基础数据.productiondataid) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4)  AND  (缺陷编码 IN(" + defectcode + ")"+@")THEN 基础数据.productiondataid ELSE NULL END )) 优级品量,
-                                        DECODE(NVL((COUNT( DISTINCT 基础数据.productiondataid ) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷编码 IN(" + defectcode + ")"+@") THEN 基础数据.productiondataid ELSE NULL END)),0),0,'0%',
-	                                    TO_CHAR((NVL((COUNT(DISTINCT 基础数据.productiondataid) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷编码 IN(" + defectcode + ")"+@")  THEN 基础数据.productiondataid ELSE NULL END ) ) ,0 ) / 
+                                        TO_CHAR(COUNT(DISTINCT 基础数据.productiondataid) - COUNT(DISTINCT CASE WHEN   缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid||缺陷条码||缺陷ID ) ELSE NULL END )) 优级品量,
+                                        DECODE(NVL((COUNT( DISTINCT 基础数据.productiondataid ) - COUNT(DISTINCT CASE WHEN   缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid||缺陷条码||缺陷ID ) ELSE NULL END)),0),0,'0%',
+	                                    TO_CHAR((NVL((COUNT(DISTINCT 基础数据.productiondataid) - COUNT(DISTINCT CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid||缺陷条码||缺陷ID ) ELSE NULL END ) ) ,0 ) / 
 	                                    DECODE(NVL( COUNT( DISTINCT 基础数据.productiondataid ), 1 ),0,1,NVL( COUNT( DISTINCT 基础数据.productiondataid ), 1 ) ) ) * 100,'fm99990.00' ) || '%' ) AS 优级品率,
                                         TO_CHAR(COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid||缺陷条码||缺陷ID ) ELSE NULL END )) 缺陷量,
                                         TO_CHAR( (COUNT( DISTINCT  CASE WHEN  缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL  THEN to_char(productiondataid||缺陷条码||缺陷ID ) ELSE NULL END ) /COUNT(DISTINCT productiondataid) * 100), 'fm99990.00') || '%' 缺陷率,

+ 3060 - 0
wwwroot/mes/rpt/rpt304/rpt - 副本.ashx

@@ -0,0 +1,3060 @@
+<%@ WebHandler Language="C#" Class="rpt" %>
+
+using System;
+using System.Web;
+using System.Web.SessionState;
+using System.Data;
+using System.Text;
+using System.Collections;
+using System.Collections.Generic;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using Curtain.DataAccess;
+using DK.XuWei.WebMes;
+
+public class rpt : IHttpHandler, IReadOnlySessionState
+{
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        using(IDataAccess conn = DataAccess.Create())
+        {    DateTime dateBegin = Convert.ToDateTime(context.Request["datebeginMaster"]);
+            DateTime dateEnd = Convert.ToDateTime(context.Request["dateendMaster"]);
+            string kilproc = "16"; //出窑工序
+            string notInproc = " (61,28)";//排除工序
+            string FunctionalTesting = "60"; //功能检测
+                                             // 241223 增加成型工号 
+            string userCode = context.Request["userCode"];
+			
+            string sqltmp = @" INSERT INTO TMP_PM_PRODUCTIONDATA_CHECKDT(GOODSNAME,
+                                          GROUTINGDAILYDETAILID,
+                                          GOODSID,
+                                          GOODSCODE,
+                                          GROUTINGUSERID,
+                                          GROUTINGUSERCODE,
+                                          CREATETIME,
+                                          PROCEDUREID,
+                                          KILNCARBATCHNO,
+                                          BARCODE,
+                                          VALUEFLAG,
+                                          PRODUCTIONDATAID,
+                                          FPRODUCTIONDATAID) SELECT PD1.GOODSNAME
+													  ,PD1.GROUTINGDAILYDETAILID
+													  ,PD1.GOODSID
+													  ,PD1.GOODSCODE
+													  ,PD1.GROUTINGUSERID
+													  ,PD1.GROUTINGUSERCODE
+													  ,PD1.CREATETIME
+													  ,PD1.PROCEDUREID
+													  ,PD1.KILNCARBATCHNO
+													  ,PD1.BARCODE
+													  ,PD1.VALUEFLAG
+													  ,NVL(PD61.PRODUCTIONDATAID, PD1.PRODUCTIONDATAID) PRODUCTIONDATAID
+													  ,PD1.PRODUCTIONDATAID FPRODUCTIONDATAID
+												  FROM (SELECT *
+														  FROM (SELECT PD28.GOODSNAME
+																	  ,PD28.GROUTINGDAILYDETAILID
+																	  ,PD28.GOODSID
+																	  ,PD28.GOODSCODE
+																	  ,PD28.GOODSLEVELTYPEID
+																	  ,PD28.GROUTINGUSERID
+																	  ,PD28.GROUTINGUSERCODE
+																	  ,PD28.CREATETIME
+																	  ,PD24.PROCEDUREID
+																	  ,PD28.KILNCARBATCHNO
+																	  ,PD28.BARCODE
+																	  ,PD28.PRODUCTIONDATAID
+																	  ,PD28.VALUEFLAG
+																	  ,ROW_NUMBER() OVER(PARTITION BY PD28.PRODUCTIONDATAID ORDER BY PD24.PRODUCTIONDATAID DESC) AS ROWNUMS
+																  FROM TP_PM_PRODUCTIONDATA PD28 -- 重烧质量登记
+																 INNER JOIN TP_PM_PRODUCTIONDATA PD24 -- 重烧修补24 / 冷补42
+																	ON PD24.GROUTINGDAILYDETAILID = PD28.GROUTINGDAILYDETAILID
+																 WHERE PD28.PROCEDUREID = 28
+																   AND PD28.VALUEFLAG = 1
+																   AND PD24.VALUEFLAG = 1
+																   AND PD24.PROCEDUREID IN (24, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+																   AND PD28.CREATETIME >= date'" + dateBegin.ToString("yyyy-MM-dd") + @"'
+																   AND PD28.CREATETIME <= date'" + dateEnd.AddSeconds(1).ToString("yyyy-MM-dd") + @"'
+																   AND ('' IS NULL OR '' = '' OR INSTR(PD28.GROUTINGUSERCODE, '') > 0)
+																   AND PD24.PRODUCTIONDATAID < PD28.PRODUCTIONDATAID) T
+														 WHERE ROWNUMS = 1
+														   AND T.PROCEDUREID = 24) PD1
+												  LEFT JOIN TP_PM_PRODUCTIONDATA PD61 -- 重烧质量检测
+													ON PD61.PROCEDUREID = 61
+												   AND PD61.VALUEFLAG = 1
+												   AND PD61.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
+												   AND PD61.KILNCARBATCHNO = PD1.KILNCARBATCHNO
+												   AND PD61.PRODUCTIONDATAID > PD1.PRODUCTIONDATAID
+													  -- 取最近的数据
+												   AND NOT EXISTS (SELECT 1
+														  FROM TP_PM_PRODUCTIONDATA PD28C -- 重烧质量登记 重复的
+														 WHERE PD28C.PROCEDUREID = 28
+														   AND PD28C.VALUEFLAG = 1
+														   AND PD28C.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
+														   AND PD28C.KILNCARBATCHNO = PD1.KILNCARBATCHNO
+														   AND PD28C.PRODUCTIONDATAID > PD1.PRODUCTIONDATAID
+														   AND PD28C.PRODUCTIONDATAID < PD61.PRODUCTIONDATAID) ";
+
+
+            //主表
+            string sqlStr = "";
+            if(context.Request["m"].ToString()=="master"){
+                //读取报表数据
+                if (context.Request["procedureMaster"] == "2")
+                {
+                    kilproc = "28";//出窑工序
+                    FunctionalTesting = "61";//功能检测
+                    notInproc = "(16,60)";//排除工序
+                    sqlStr = @"WITH 
+							产品汇总缺陷 AS ( 
+												SELECT 	
+														 CASE WHEN  GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =5   THEN '小计'
+											WHEN  GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =6  AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001001' THEN '大件合计'
+											WHEN  GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =6  AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001002' THEN '小件合计'
+											WHEN  GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =7   THEN '总计'
+														ELSE to_char(good.GOODSCODE) END AS GOODSCODE,
+									GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME) AS GID,
+									good.GOODSSPECIFICATION,
+									good.GOODSNAME,
+										CASE WHEN GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6))=6 AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001001' THEN '大件' 
+										 WHEN GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6))=6 AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001002' THEN '小件'
+										 ELSE TO_CHAR(gtp.GOODSTYPENAME )END GOODSTYPENAME,
+									SUBSTR(gtp.GOODSTYPECODE, 0, 6)  AS GOODSTYPECODE,
+									TO_CHAR(COUNT( DISTINCT CASE WHEN   df.DEFECTCODE IN ('01','02','03','04','05','06','07','08','09','10','12','13','14','15','16','17','18','19','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','001','002','099','99','1' ,'2' ,'3' )    THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 成型半检缺陷__缺陷汇总,									
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '10', '12', '13', '14', '15', '16', '17', '18', '19', '23', '25', '35' )   THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 精修缺陷_打磨缺陷_缺陷汇总,									
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN PDs.PROCEDUREID IN (5,36,52)   AND df.DEFECTCODE IN ( '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '28', '34', '35') THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 精修缺陷_刷洗缺陷_缺陷汇总,									
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN df.DEFECTCODE IN ( '36','37','38','39','40','41','42','43','44') THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 施釉擦坯缺陷_施釉缺陷_缺陷汇总,																
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN df.DEFECTCODE IN ( '47','48','49','50','51','52','53','54','55','56','20','57')AND MDF.DEFECTCODE IS NOT NULL AND DF.BARCODE IS NOT NULL  THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END ))AS 施釉擦坯缺陷_擦坯缺陷_缺陷汇总,																
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN df.DEFECTCODE IN ( '61','62','63','64','65','66','67', '11') THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 烧成缺陷_装窑缺陷_缺陷汇总,									
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN df.DEFECTCODE IN ( '69','70','71','43','73','74','75','76','77','78','79','80') THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END ))AS 烧成缺陷_烧窑缺陷_缺陷汇总,									
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN df.DEFECTCODE IN ( '83','84')  THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 烧成缺陷_出窑缺陷_缺陷汇总,
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '86', '87','086', '88'  ) THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 原料缺陷_缺陷汇总,
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '91', '92', '93', '083', '084') THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 冷修_缺陷汇总,					
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '091', '092', '093', '96') THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 回烧修补_缺陷汇总,									
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '061', '062', '063', '064', '065', '066', '067', '011' ) THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 回烧缺陷_装窑缺陷_缺陷汇总,								
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '069', '070', '071', '43', '073', '074', '075', '076', '077', '078', '079', '080' ) THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 回烧缺陷_烧窑缺陷_缺陷汇总,								
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '0083', '0084' ) THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 回烧缺陷_出窑缺陷_缺陷汇总,									
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '98'  ) THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 研磨_缺陷汇总,										
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN (  '100') THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 其他_缺陷汇总
+							FROM
+								TP_PM_DEFECT df 
+									 
+							LEFT JOIN (SELECT   pd1.goodsname
+														 ,pd1.groutingdailydetailid
+														 ,pd1.goodsid
+														 ,pd1.goodscode 
+														 ,pd1.groutinguserid
+														 ,pd1.groutingusercode
+														 ,pd1.createtime
+														 ,pd1.procedureid
+														 ,pd1.kilncarbatchno
+														 ,pd1.barcode
+														 ,pd1.valueflag 
+														 ,nvl(pd61.productiondataid, pd1.productiondataid) productiondataid
+														 ,pd1.productiondataid  fproductiondataid
+											FROM (SELECT *
+													FROM (SELECT pd28.goodsname
+																,pd28.groutingdailydetailid
+																,pd28.goodsid
+																,pd28.goodscode
+																,pd28.goodsleveltypeid
+																,pd28.groutinguserid
+																,pd28.groutingusercode
+																,pd28.createtime
+																,pd24.procedureid
+																,pd28.kilncarbatchno
+																,pd28.barcode
+																,pd28.productiondataid
+																,pd28.valueflag
+																,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+															FROM tp_pm_productiondata pd28 -- 重烧质量登记
+														   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
+															  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+														   WHERE pd28.procedureid = 28
+															 AND pd28.valueflag = 1
+															 AND pd24.valueflag = 1
+															 AND pd24.procedureid IN (24, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+															 AND pd28.CREATETIME >= @DATEBEGIN@
+															 AND pd28.CREATETIME <=   @DATEEND@ 
+															 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )
+															 AND pd24.productiondataid < pd28.productiondataid) t
+												   WHERE rownums = 1
+													 AND t.procedureid = 24) pd1
+											LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
+											  ON pd61.procedureid = 61
+											 AND pd61.valueflag = 1
+											 AND pd61.groutingdailydetailid = pd1.groutingdailydetailid
+											 AND pd61.kilncarbatchno = pd1.kilncarbatchno
+											 AND pd61.productiondataid > pd1.productiondataid
+												-- 取最近的数据
+											 AND NOT EXISTS (SELECT 1
+													FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
+												   WHERE pd28c.procedureid = 28
+													 AND pd28c.valueflag = 1
+													 AND pd28c.groutingdailydetailid = pd1.groutingdailydetailid
+													 AND pd28c.kilncarbatchno = pd1.kilncarbatchno
+													 AND pd28c.productiondataid > pd1.productiondataid
+													 AND pd28c.productiondataid < pd61.productiondataid)) pd
+								  ON df.productiondataid in (pd.productiondataid ,pd.fproductiondataid)
+
+									LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
+									LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
+									 LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID 	
+									INNER JOIN tp_pm_productiondata pds ON pds.barcode = pd.barcode  AND pds.valueflag = 1
+									 WHERE df.VALUEFLAG=1   
+												AND PD.CREATETIME >= @DATEBEGIN@  
+												AND PD.CREATETIME <=  @DATEEND@  AND DF.PROCEDUREID NOT IN " + notInproc;
+                    sqlStr += @"GROUP BY Grouping sets ( ( good.GOODSCODE, good.GOODSNAME,good.GOODSSPECIFICATION,gtp.GOODSTYPENAME ), ( gtp.GOODSTYPENAME) ,(SUBSTR(gtp.GOODSTYPECODE, 0, 6)),()) 
+											),
+											产品明细缺陷 AS (
+											SELECT			GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)),
+								 CASE WHEN  GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =5   THEN '小计'
+											WHEN  GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =6   AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001001' THEN '大件合计'
+											WHEN  GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =6   AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001002' THEN '小件合计'
+											WHEN  GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =7   THEN '总计'
+														ELSE to_char(GD.GOODSCODE) END AS GOODSCODE,
+									GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME) AS GID,
+								gd.GOODSNAME,
+								CASE WHEN GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6))=6 AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001001' THEN '大件' 
+										 WHEN GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6))=6 AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001002' THEN '小件'
+										 ELSE TO_CHAR(gtp.GOODSTYPENAME )END GOODSTYPENAME,
+								SUBSTR(gtp.GOODSTYPECODE, 0, 6)  AS GOODSTYPECODE,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '01' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_坯脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '02' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_棕眼,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '03' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂底,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '04' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂圈,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '05' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂鼻子,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '06' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂水道,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '07' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂管,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '08' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_沾接裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '09' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂眼,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '10' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_糙活,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '12' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_变形,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '13' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_渣,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '14' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_管道渣,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '15' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_孔眼不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '16' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_堵眼,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '17' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_眼歪,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '18' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_丢气孔,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '19' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_丢眼,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '21' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_漏气,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '22' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_空泡,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '23' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_水封不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '24' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_漏水,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '25' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_卡球,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '26' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_冲刷不好,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '27' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_泥埂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '28' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_断浆迹,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '29' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_模迹,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '30' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_重皮,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '31' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_气泡,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '32' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_眼扁,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '33' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_水绺,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '34' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '35' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_活糙,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '001' ) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_贴码不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '002' ) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_干补不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '1' )   THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_内漏不合格,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '2' )   THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_外漏不合格,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '3' )   THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_试水不合格,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '99' )   THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_隧道窑其他蹦脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '099' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_梭式窑其他蹦脏,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '10' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_糙活,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '12' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_变形,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '13' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_渣,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '14' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_管道渣,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '15' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_孔眼不良,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '16' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_睹眼,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '17' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_眼歪,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '18' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_丢气孔,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '19' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_丢眼,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '23' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_水封不良,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '25' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_卡球,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '35' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_活糙,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '01' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_坯脏,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '02' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_棕眼,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '03' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂底,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '04' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂圈,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '05' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂鼻子,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '06' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂水道,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '07' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂管,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '08' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_沾接裂,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '09' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂眼,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '10' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_糙活,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '28' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_断浆迹,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '34' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '35' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_活糙,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '36' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_滚釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '37' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉薄,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '38' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉不匀,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '39' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉磕,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '40' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '41' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉沾,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '42' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉绺,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '43' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_针孔,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '44' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_色脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '47' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_灌釉不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '48' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_擦脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '49' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_崩标,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '50' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_倒标,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '51' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_标污,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '52' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_错标,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '53' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_丢标,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '54' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_标错位,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '55' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_未灌釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '56' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_灌磕,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '20' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_坯磕,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '57' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_碱石,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '61' ) AND PD.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_落脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '62' ) AND PD.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_装沾,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '63' ) AND PD.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_装磕,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '64' ) AND PD.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_装裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '65' ) AND PD.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_装走,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '66' ) AND PD.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_装脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '67' ) AND PD.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_缺釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '11' ) AND PD.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_板折,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '69' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_水滴,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '70' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_窑脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '71' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_烧裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '43' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_针孔,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '73' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_风惊,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '74' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_烧生,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '75' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_串烟,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '76' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_烧坑,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '77' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_桔釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '78' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_过火,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '79' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_火燎,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '80' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_烧走,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '83' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_出窑缺陷_磕碰,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '84' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_出窑缺陷_划釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '86' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 原料缺陷_泥料缺陷_铜脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '87' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 原料缺陷_泥料缺陷_料脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '086' ) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 原料缺陷_釉料缺陷_铜脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '88' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 原料缺陷_釉料缺陷_铁脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '91' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 冷修缺陷_修补不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '92' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 冷修缺陷_漏修,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '93' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 冷修缺陷_漏检,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '083' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 冷修缺陷_磕碰,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '084' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 冷修缺陷_划釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '091' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧修补缺陷_修补不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '092' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧修补缺陷_漏修,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '093' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧修补缺陷_漏检,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '96' )   THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧修补缺陷_白点,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '061' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_落脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '062' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_装沾,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '063' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_装磕,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '064' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_装裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '065' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_装走,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '066' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_装脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '067' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_缺釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '011' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_板折,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '069' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_水滴,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '070' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_窑脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '071' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_烧裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '43' )   THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_针孔,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '073' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_风惊,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '074' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_烧生,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '075' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_串烟,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '076' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_烧坑,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '077' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_桔釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '078' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_过火,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '079' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_火燎,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '080' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_烧走,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '0083')  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_出窑缺陷_磕碰,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '0084')  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_出窑缺陷_划釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '98' )   THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 研磨缺陷_研磨不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '100' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 其他_隧道窑其他试验不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '0100')  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 其他_梭式窑其他试验不良
+							FROM
+								TP_PM_DEFECT df
+									LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gd ON  df.BARCODE = gd.BARCODE 
+									
+								LEFT JOIN (SELECT   pd1.goodsname
+														 ,pd1.groutingdailydetailid
+														 ,pd1.goodsid
+														 ,pd1.goodscode 
+														 ,pd1.groutinguserid
+														 ,pd1.groutingusercode
+														 ,pd1.createtime
+														 ,pd1.procedureid
+														 ,pd1.kilncarbatchno
+														 ,pd1.barcode
+														 ,pd1.valueflag 
+														 ,nvl(pd61.productiondataid, pd1.productiondataid) productiondataid
+													     ,pd1.productiondataid  fproductiondataid
+											FROM (SELECT *
+													FROM (SELECT pd28.goodsname
+																,pd28.groutingdailydetailid
+																,pd28.goodsid
+																,pd28.goodscode
+																,pd28.goodsleveltypeid
+																,pd28.groutinguserid
+																,pd28.groutingusercode
+																,pd28.createtime
+																,pd24.procedureid
+																,pd28.kilncarbatchno
+																,pd28.barcode
+																,pd28.productiondataid
+																,pd28.valueflag
+																,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+															FROM tp_pm_productiondata pd28 -- 重烧质量登记
+														   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
+															  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+														   WHERE pd28.procedureid = 28
+															 AND pd28.valueflag = 1
+															 AND pd24.valueflag = 1
+															 AND pd24.procedureid IN (24, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+															 AND pd28.CREATETIME >= @DATEBEGIN@
+															 AND pd28.CREATETIME <=   @DATEEND@ 
+															 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )
+															 AND pd24.productiondataid < pd28.productiondataid) t
+												   WHERE rownums = 1
+													 AND t.procedureid = 24) pd1
+											LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
+											  ON pd61.procedureid = 61
+											 AND pd61.valueflag = 1
+											 AND pd61.groutingdailydetailid = pd1.groutingdailydetailid
+											 AND pd61.kilncarbatchno = pd1.kilncarbatchno
+											 AND pd61.productiondataid > pd1.productiondataid
+												-- 取最近的数据
+											 AND NOT EXISTS (SELECT 1
+													FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
+												   WHERE pd28c.procedureid = 28
+													 AND pd28c.valueflag = 1
+													 AND pd28c.groutingdailydetailid = pd1.groutingdailydetailid
+													 AND pd28c.kilncarbatchno = pd1.kilncarbatchno
+													 AND pd28c.productiondataid > pd1.productiondataid
+													 AND pd28c.productiondataid < pd61.productiondataid)) pd
+								  ON df.productiondataid in (pd.productiondataid ,pd.fproductiondataid)
+									LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
+									LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
+									LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID 
+									INNER JOIN tp_pm_productiondata pds ON pds.barcode = pd.barcode  AND pds.valueflag = 1
+							WHERE df.VALUEFLAG=1 
+												AND PD.CREATETIME >= @DATEBEGIN@
+												AND PD.CREATETIME <=  @DATEEND@   AND DF.PROCEDUREID NOT IN " + notInproc;
+                    sqlStr += @"	GROUP BY
+												Grouping sets ( ( gd.GOODSCODE, gd.GOODSNAME,gtp.GOODSTYPENAME ), ( gtp.GOODSTYPENAME) , ( gtp.GOODSTYPENAME) ,(SUBSTR(gtp.GOODSTYPECODE, 0, 6)),()    ) 
+								),
+								检验数 AS (	SELECT GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX),
+										 CASE WHEN  GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX) =5   THEN '小计'
+													WHEN  GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX) =6   THEN '合计'
+													WHEN  GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX) =7   THEN '总计'
+																							 ELSE to_char(GOODSCODE) END AS GOODSCODE,
+										CASE WHEN GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX)=6 AND GOODSTYPECODESIX='001001' THEN '大件' 
+												 WHEN GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX)=6 AND GOODSTYPECODESIX='001002' THEN '小件'
+																				   ELSE TO_CHAR(GOODSTYPENAME )END GOODSTYPENAME,GOODSNAME,
+																					  SUM(检验量)检验量,SUM(合格量) 合格量,SUM(残品) 残品,
+																					 SUM(检验量*LUSTERWAREWEIGHT) 出窑重量,
+																					 SUM(合格量*LUSTERWAREWEIGHT) 合格品重量,
+																					 SUM(残品*LUSTERWAREWEIGHT) 残品重量
+										FROM(
+										SELECT distinct
+																			pd.GOODSCODE,
+																			SUBSTR(pd.GOODSTYPECODE, 0, 6) GOODSTYPECODESIX,
+																			pd.GOODSNAME,
+																			PD.GOODSTYPENAME,
+																			COUNT(   pd.BARCODE ) AS 检验量,
+																			COUNT(  CASE WHEN PD.GOODSLEVELTYPEID IN ( 4, 5 ) THEN BARCODE ELSE null END ) AS 合格量,
+																			COUNT(  CASE WHEN PD.GOODSLEVELTYPEID  NOT IN ( 4, 5 ) THEN BARCODE ELSE null  END ) 残品,
+																			LUSTERWAREWEIGHT
+										 FROM (SELECT barcode
+													,goodscode
+													,goodsleveltypeid
+													,goodsname
+													,groutinguserid
+													,groutingusercode
+													,goodstypename
+													,goodstypecode
+													,lusterwareweight
+													,createtime
+											  -- ,row_number() over(PARTITION BY barcode ORDER BY createtime DESC) AS rownums
+												FROM (SELECT DISTINCT pd.barcode
+																	 ,pd.goodscode
+																	 ,pd.goodsname
+																	 ,pd.groutinguserid
+																	 ,pd.groutingusercode
+																	 ,gtp.goodstypecode
+																	 ,nvl(pd61.goodsleveltypeid, pd.goodsleveltypeid) goodsleveltypeid
+																	 ,pd.createtime
+																	 ,gtp.goodstypename
+																	 ,good.lusterwareweight
+														FROM (SELECT *
+																FROM (SELECT pd28.goodsname
+																			,pd28.groutingdailydetailid
+																			,pd28.goodsid
+																			,pd28.goodscode
+																			,pd28.goodsleveltypeid
+																			,pd28.groutinguserid
+																			,pd28.groutingusercode
+																			,pd28.createtime
+																			,pd24.procedureid
+																			,pd28.kilncarbatchno
+																			,pd28.barcode
+																			,pd28.productiondataid
+																			,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+																		FROM tp_pm_productiondata pd28 -- 重烧质量登记
+																	   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
+																		  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+																	   WHERE pd28.procedureid = 28
+																		 AND pd28.valueflag = 1
+																		 AND pd24.valueflag = 1
+																		 AND pd24.procedureid IN (24, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+																		 AND pd28.CREATETIME >= @DATEBEGIN@
+																		 AND pd28.CREATETIME <=   @DATEEND@ 
+																		 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )                                                 
+																		 AND pd24.productiondataid < pd28.productiondataid) t
+															   WHERE rownums = 1
+																 AND t.procedureid = 24) pd
+														LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
+														  ON pd61.procedureid = 61
+														 AND pd61.valueflag = 1
+														 AND pd61.groutingdailydetailid = pd.groutingdailydetailid
+														 AND pd61.kilncarbatchno = pd.kilncarbatchno
+														 AND pd61.productiondataid > pd.productiondataid
+															-- 取最近的数据
+														 AND NOT EXISTS
+													   (SELECT 1
+																FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
+															   WHERE pd28c.procedureid = 28
+																 AND pd28c.valueflag = 1
+																 AND pd28c.groutingdailydetailid = pd.groutingdailydetailid
+																 AND pd28c.kilncarbatchno = pd.kilncarbatchno
+																 AND pd28c.productiondataid > pd.productiondataid
+																 AND pd28c.productiondataid < pd61.productiondataid)
+                          
+														LEFT JOIN tp_mst_goods good
+														  ON good.goodsid = pd.goodsid
+														LEFT JOIN tp_mst_goodstype gtp
+														  ON gtp.goodstypeid = good.goodstypeid                          
+													  )) pd
+											GROUP BY pd.GOODSCODE,SUBSTR(pd.GOODSTYPECODE, 0, 6),pd.GOODSNAME,PD.GOODSTYPENAME,LUSTERWAREWEIGHT
+				
+										)
+												GROUP BY Grouping sets((GOODSCODE,GOODSNAME,GOODSTYPENAME,GOODSTYPECODESIX),(GOODSTYPENAME),(GOODSTYPECODESIX),())),
+																		产品 AS (
+																		SELECT TO_CHAR(GOODSCODE) AS GOODSCODE,GOODSNAME,GOODSSPECIFICATION,gtp.GOODSTYPENAME 
+																					,TP_MST_GOODS.LUSTERWAREWEIGHT
+																		FROM TP_MST_GOODS
+																		LEFT JOIN TP_MST_GOODSTYPE gtp ON TP_MST_GOODS.GOODSTYPEID=gtp.GOODSTYPEID
+																		 WHERE TP_MST_GOODS.VALUEFLAG=1
+																		UNION ALL
+																		SELECT '总计' AS GOODSCODE,null,NULL ,NULL,null  FROM dual
+	
+																		),
+打磨擦洗出窑数 AS (
+								SELECT  COUNT(DISTINCT CASE WHEN pds.PROCEDUREID IN (4,36,53) THEN PD.productiondataid ELSE NULL END ) 打磨,
+										COUNT(DISTINCT CASE WHEN pds.PROCEDUREID IN (5,36,52) THEN PD.productiondataid ELSE NULL END ) 擦洗,
+										COUNT(DISTINCT CASE WHEN pds.PROCEDUREID =@kilproc@ THEN PD.productiondataid ELSE NULL END ) 质量登记
+								 FROM  ( SELECT * FROM (SELECT pd28.goodsname
+																			,pd28.groutingdailydetailid
+																			,pd28.goodsid
+																			,pd28.goodscode
+																			,pd28.goodsleveltypeid
+																			,pd28.groutinguserid
+																			,pd28.groutingusercode
+																			,pd28.createtime
+																			,pd24.procedureid
+																			,pd28.kilncarbatchno
+																			,pd28.barcode
+																			,pd28.productiondataid
+																			,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+																		FROM tp_pm_productiondata pd28 -- 重烧质量登记
+																	   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
+																		  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+																	   WHERE pd28.procedureid = 28
+																		 AND pd28.valueflag = 1
+																		 AND pd24.valueflag = 1
+																		 AND pd24.procedureid IN (24, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+																		 AND pd28.CREATETIME >= @DATEBEGIN@
+																		 AND pd28.CREATETIME <=   @DATEEND@ 
+																		 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )                                                 
+																		 AND pd24.productiondataid < pd28.productiondataid) t
+															   WHERE rownums = 1
+																 AND t.procedureid = 24 ) pd 
+								 INNER JOIN TP_PM_PRODUCTIONDATA pds ON pds.BARCODE=PD.BARCODE 		 AND pds.valueflag = 1					
+								
+								)
+							SELECT * FROM (
+								SELECT
+								to_CHAR(检验数.GOODSCODE) AS  产品编码,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.GOODSNAME) ELSE NULL END 产品名称,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(产品.GOODSSPECIFICATION) ELSE NULL END 产品规格,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.GOODSTYPENAME) ELSE NULL END 产品类别,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(产品.LUSTERWAREWEIGHT) ELSE NULL END 单重,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.检验量) ELSE NULL END 检验量,
+							    CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.出窑重量) ELSE NULL END 出窑重量,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.合格量) ELSE NULL END 合格量,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.合格品重量) ELSE NULL END 合格品重量,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.残品) ELSE NULL END 残品,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.残品重量) ELSE NULL END 残品重量,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN DECODE( NVL( 检验数.合格量, 0 ), 0, '0%', TO_CHAR( ( NVL( 检验数.合格量, 0 ) / DECODE( NVL( 检验数.检验量, 1 ), 0, 1, NVL( 检验数.检验量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) ELSE NULL END AS 合格率,
+								to_char(nvl(detailmx.成型半检缺陷_坯脏,0)) AS 成型半检缺陷__坯脏,
+								to_char(nvl(detailmx.成型半检缺陷_棕眼,0)) AS 成型半检缺陷__棕眼,
+								to_char(nvl(detailmx.成型半检缺陷_裂底,0)) AS 成型半检缺陷__裂底,
+								to_char(nvl(detailmx.成型半检缺陷_裂圈,0)) AS 成型半检缺陷__裂圈,
+								to_char(nvl(detailmx.成型半检缺陷_裂鼻子,0)) AS 成型半检缺陷__裂鼻子,
+								to_char(nvl(detailmx.成型半检缺陷_裂水道,0)) AS 成型半检缺陷__裂水道,
+								to_char(nvl(detailmx.成型半检缺陷_裂管,0)) AS 成型半检缺陷__裂管,
+								to_char(nvl(detailmx.成型半检缺陷_沾接裂,0)) AS 成型半检缺陷__沾接裂,
+								to_char(nvl(detailmx.成型半检缺陷_裂眼,0)) AS 成型半检缺陷__裂眼,
+								to_char(nvl(detailmx.成型半检缺陷_糙活,0)) AS 成型半检缺陷__糙活,
+								to_char(nvl(detailmx.成型半检缺陷_变形,0)) AS 成型半检缺陷__变形,
+								to_char(nvl(detailmx.成型半检缺陷_渣,0)) AS 成型半检缺陷__渣,
+								to_char(nvl(detailmx.成型半检缺陷_管道渣,0)) AS 成型半检缺陷__管道渣,
+								to_char(nvl(detailmx.成型半检缺陷_孔眼不良,0)) AS 成型半检缺陷__孔眼不良,
+								to_char(nvl(detailmx.成型半检缺陷_堵眼,0)) AS 成型半检缺陷__堵眼,
+								to_char(nvl(detailmx.成型半检缺陷_眼歪,0)) AS 成型半检缺陷__眼歪,
+								to_char(nvl(detailmx.成型半检缺陷_丢气孔,0)) AS 成型半检缺陷__丢气孔,
+								to_char(nvl(detailmx.成型半检缺陷_丢眼,0)) AS 成型半检缺陷__丢眼,
+								to_char(nvl(detailmx.成型半检缺陷_漏气,0)) AS 成型半检缺陷__漏气,
+								to_char(nvl(detailmx.成型半检缺陷_空泡,0)) AS 成型半检缺陷__空泡,
+								to_char(nvl(detailmx.成型半检缺陷_水封不良,0)) AS 成型半检缺陷__水封不良,
+								to_char(nvl(detailmx.成型半检缺陷_漏水,0)) AS 成型半检缺陷__漏水,
+								to_char(nvl(detailmx.成型半检缺陷_卡球,0)) AS 成型半检缺陷__卡球,
+								to_char(nvl(detailmx.成型半检缺陷_冲刷不好,0)) AS 成型半检缺陷__冲刷不好,
+								to_char(nvl(detailmx.成型半检缺陷_泥埂,0)) AS 成型半检缺陷__泥埂,
+								to_char(nvl(detailmx.成型半检缺陷_断浆迹,0)) AS 成型半检缺陷__断浆迹,
+								to_char(nvl(detailmx.成型半检缺陷_模迹,0)) AS 成型半检缺陷__模迹,
+								to_char(nvl(detailmx.成型半检缺陷_重皮,0)) AS 成型半检缺陷__重皮,
+								to_char(nvl(detailmx.成型半检缺陷_气泡,0)) AS 成型半检缺陷__气泡,
+								to_char(nvl(detailmx.成型半检缺陷_眼扁,0)) AS 成型半检缺陷__眼扁,
+								to_char(nvl(detailmx.成型半检缺陷_水绺,0)) AS 成型半检缺陷__水绺,
+								to_char(nvl(detailmx.成型半检缺陷_裂,0)) AS 成型半检缺陷__裂,
+								to_char(nvl(detailmx.成型半检缺陷_活糙 ,0)) AS 成型半检缺陷__活糙,
+								to_char(nvl(detailmx.成型半检缺陷_贴码不良,0)) AS 成型半检缺陷__贴码不良,
+								to_char(nvl(detailmx.成型半检缺陷_干补不良,0)) AS 成型半检缺陷__干补不良,
+								to_char(nvl(detailmx.成型半检缺陷_内漏不合格,0)) AS 成型半检缺陷__内漏不合格,
+								to_char(nvl(detailmx.成型半检缺陷_外漏不合格,0)) AS 成型半检缺陷__外漏不合格,
+								to_char(nvl(detailmx.成型半检缺陷_试水不合格,0)) AS 成型半检缺陷__试水不合格,
+								to_char(nvl(detailmx.成型半检缺陷_梭式窑其他蹦脏,0)) AS 成型半检缺陷__梭式窑蹦脏,
+								nvl(f.成型半检缺陷__缺陷汇总,0) AS 成型半检缺陷__缺陷汇总,
+								DECODE( NVL( f.成型半检缺陷__缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.成型半检缺陷__缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 成型半检缺陷__缺陷率,
+								to_char(nvl(detailmx.精修缺陷_打磨缺陷_糙活,0)) AS 精修缺陷_打磨缺陷_糙活,
+								to_char(nvl(detailmx.精修缺陷_打磨缺陷_变形,0)) AS 精修缺陷_打磨缺陷_变形,
+								to_char(nvl(detailmx.精修缺陷_打磨缺陷_渣,0)) AS 精修缺陷_打磨缺陷_渣,
+								to_char(nvl(detailmx.精修缺陷_打磨缺陷_管道渣,0)) AS 精修缺陷_打磨缺陷_管道渣,
+								to_char(nvl(detailmx.精修缺陷_打磨缺陷_孔眼不良,0)) AS 精修缺陷_打磨缺陷_孔眼不良,
+								to_char(nvl(detailmx.精修缺陷_打磨缺陷_睹眼,0)) AS 精修缺陷_打磨缺陷_睹眼,
+								to_char(nvl(detailmx.精修缺陷_打磨缺陷_眼歪,0)) AS 精修缺陷_打磨缺陷_眼歪,
+								to_char(nvl(detailmx.精修缺陷_打磨缺陷_丢气孔,0)) AS 精修缺陷_打磨缺陷_丢气孔,
+								to_char(nvl(detailmx.精修缺陷_打磨缺陷_丢眼,0)) AS 精修缺陷_打磨缺陷_丢眼,
+								to_char(nvl(detailmx.精修缺陷_打磨缺陷_水封不良,0)) AS 精修缺陷_打磨缺陷_水封不良,
+								to_char(nvl(detailmx.精修缺陷_打磨缺陷_卡球,0)) AS 精修缺陷_打磨缺陷_卡球,
+								to_char(nvl(detailmx.精修缺陷_打磨缺陷_活糙,0)) AS 精修缺陷_打磨缺陷_活糙,
+								nvl(f.精修缺陷_打磨缺陷_缺陷汇总,0) AS 精修缺陷_打磨缺陷_缺陷汇总,
+								DECODE( NVL( f.精修缺陷_打磨缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.精修缺陷_打磨缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 精修缺陷_打磨缺陷_缺陷率,
+								to_char(nvl(detailmx.精修缺陷_刷洗缺陷_坯脏,0)) AS 精修缺陷_刷洗缺陷_坯脏,
+								to_char(nvl(detailmx.精修缺陷_刷洗缺陷_棕眼,0)) AS 精修缺陷_刷洗缺陷_棕眼,
+								to_char(nvl(detailmx.精修缺陷_刷洗缺陷_裂底,0)) AS 精修缺陷_刷洗缺陷_裂底,
+								to_char(nvl(detailmx.精修缺陷_刷洗缺陷_裂圈,0)) AS 精修缺陷_刷洗缺陷_裂圈,
+								to_char(nvl(detailmx.精修缺陷_刷洗缺陷_裂鼻子,0)) AS 精修缺陷_刷洗缺陷_裂鼻子,
+								to_char(nvl(detailmx.精修缺陷_刷洗缺陷_裂水道,0)) AS 精修缺陷_刷洗缺陷_裂水道,
+								to_char(nvl(detailmx.精修缺陷_刷洗缺陷_裂管,0)) AS 精修缺陷_刷洗缺陷_裂管,
+								to_char(nvl(detailmx.精修缺陷_刷洗缺陷_沾接裂,0)) AS 精修缺陷_刷洗缺陷_沾接裂,
+								to_char(nvl(detailmx.精修缺陷_刷洗缺陷_裂眼,0)) AS 精修缺陷_刷洗缺陷_裂眼,
+								to_char(nvl(detailmx.精修缺陷_刷洗缺陷_糙活,0)) AS 精修缺陷_刷洗缺陷_糙活,
+								to_char(nvl(detailmx.精修缺陷_刷洗缺陷_断浆迹,0)) AS 精修缺陷_刷洗缺陷_断浆迹,
+								to_char(nvl(detailmx.精修缺陷_刷洗缺陷_裂,0)) AS 精修缺陷_刷洗缺陷_裂,
+								to_char(nvl(detailmx.精修缺陷_刷洗缺陷_活糙,0)) AS 精修缺陷_刷洗缺陷_活糙,
+																
+								nvl(f.精修缺陷_刷洗缺陷_缺陷汇总,0) AS 精修缺陷_刷洗缺陷_缺陷汇总,
+								DECODE( NVL( f.精修缺陷_刷洗缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.精修缺陷_刷洗缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL(打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 精修缺陷_刷洗缺陷_缺陷率,
+								to_char(nvl(detailmx.施釉擦坯缺陷_施釉缺陷_滚釉,0)) AS 施釉擦坯缺陷_施釉缺陷_滚釉,
+								to_char(nvl(detailmx.施釉擦坯缺陷_施釉缺陷_釉薄,0)) AS 施釉擦坯缺陷_施釉缺陷_釉薄,
+								to_char(nvl(detailmx.施釉擦坯缺陷_施釉缺陷_釉不匀,0)) AS 施釉擦坯缺陷_施釉缺陷_釉不匀,
+								to_char(nvl(detailmx.施釉擦坯缺陷_施釉缺陷_釉磕,0)) AS 施釉擦坯缺陷_施釉缺陷_釉磕,
+								to_char(nvl(detailmx.施釉擦坯缺陷_施釉缺陷_釉脏,0)) AS 施釉擦坯缺陷_施釉缺陷_釉脏,
+								to_char(nvl(detailmx.施釉擦坯缺陷_施釉缺陷_釉沾,0)) AS 施釉擦坯缺陷_施釉缺陷_釉沾,
+								to_char(nvl(detailmx.施釉擦坯缺陷_施釉缺陷_釉绺,0)) AS 施釉擦坯缺陷_施釉缺陷_釉绺,
+								to_char(nvl(detailmx.施釉擦坯缺陷_施釉缺陷_针孔,0)) AS 施釉擦坯缺陷_施釉缺陷_针孔,
+								to_char(nvl(detailmx.施釉擦坯缺陷_施釉缺陷_色脏,0)) AS 施釉擦坯缺陷_施釉缺陷_色脏,
+
+								nvl(f.施釉擦坯缺陷_施釉缺陷_缺陷汇总,0) AS 施釉擦坯缺陷_施釉缺陷_缺陷汇总,
+								DECODE( NVL( f.施釉擦坯缺陷_施釉缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.施釉擦坯缺陷_施釉缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 施釉擦坯缺陷_施釉缺陷_缺陷率,
+							to_char(nvl(detailmx.施釉擦坯缺陷_擦坯缺陷_灌釉不良,0)) AS 施釉擦坯缺陷_擦坯缺陷_灌釉不良,
+							to_char(nvl(detailmx.施釉擦坯缺陷_擦坯缺陷_擦脏,0)) AS 施釉擦坯缺陷_擦坯缺陷_擦脏,
+							to_char(nvl(detailmx.施釉擦坯缺陷_擦坯缺陷_崩标,0)) AS 施釉擦坯缺陷_擦坯缺陷_崩标,
+							to_char(nvl(detailmx.施釉擦坯缺陷_擦坯缺陷_倒标,0)) AS 施釉擦坯缺陷_擦坯缺陷_倒标,
+							to_char(nvl(detailmx.施釉擦坯缺陷_擦坯缺陷_标污,0)) AS 施釉擦坯缺陷_擦坯缺陷_标污,
+							to_char(nvl(detailmx.施釉擦坯缺陷_擦坯缺陷_错标,0)) AS 施釉擦坯缺陷_擦坯缺陷_错标,
+							to_char(nvl(detailmx.施釉擦坯缺陷_擦坯缺陷_丢标,0)) AS 施釉擦坯缺陷_擦坯缺陷_丢标,
+							to_char(nvl(detailmx.施釉擦坯缺陷_擦坯缺陷_标错位,0)) AS 施釉擦坯缺陷_擦坯缺陷_标错位,
+							to_char(nvl(detailmx.施釉擦坯缺陷_擦坯缺陷_未灌釉,0)) AS 施釉擦坯缺陷_擦坯缺陷_未灌釉,
+							to_char(nvl(detailmx.施釉擦坯缺陷_擦坯缺陷_灌磕,0)) AS 施釉擦坯缺陷_擦坯缺陷_灌磕,
+							to_char(nvl(detailmx.施釉擦坯缺陷_擦坯缺陷_坯磕,0)) AS 施釉擦坯缺陷_擦坯缺陷_坯磕,
+							to_char(nvl(detailmx.施釉擦坯缺陷_擦坯缺陷_碱石,0)) AS 施釉擦坯缺陷_擦坯缺陷_碱石,
+
+								nvl(f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总,0) AS 施釉擦坯缺陷_擦坯缺陷_缺陷汇总,
+								DECODE( NVL( f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 施釉擦坯缺陷_擦坯缺陷_缺陷率,
+								to_char(nvl(detailmx.回烧缺陷_装窑缺陷_落脏,0)) AS 回烧缺陷_装窑缺陷_落脏,
+								to_char(nvl(detailmx.回烧缺陷_装窑缺陷_装沾,0)) AS 回烧缺陷_装窑缺陷_装沾,
+								to_char(nvl(detailmx.回烧缺陷_装窑缺陷_装磕,0)) AS 回烧缺陷_装窑缺陷_装磕,
+								to_char(nvl(detailmx.回烧缺陷_装窑缺陷_装裂,0)) AS 回烧缺陷_装窑缺陷_装裂,
+								to_char(nvl(detailmx.回烧缺陷_装窑缺陷_装走,0)) AS 回烧缺陷_装窑缺陷_装走,
+								to_char(nvl(detailmx.回烧缺陷_装窑缺陷_装脏,0)) AS 回烧缺陷_装窑缺陷_装脏,
+								to_char(nvl(detailmx.回烧缺陷_装窑缺陷_缺釉,0)) AS 回烧缺陷_装窑缺陷_缺釉,
+								to_char(nvl(detailmx.回烧缺陷_装窑缺陷_板折,0)) AS 回烧缺陷_装窑缺陷_板折,
+
+								nvl(f.回烧缺陷_装窑缺陷_缺陷汇总,0) AS 回烧缺陷_装窑缺陷_缺陷汇总,
+								DECODE( NVL( f.回烧缺陷_装窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.回烧缺陷_装窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 回烧缺陷_装窑缺陷_缺陷率,
+								to_char(nvl(detailmx.回烧缺陷_烧窑缺陷_水滴,0)) AS 回烧缺陷_烧窑缺陷_水滴,
+								to_char(nvl(detailmx.回烧缺陷_烧窑缺陷_窑脏,0)) AS 回烧缺陷_烧窑缺陷_窑脏,
+								to_char(nvl(detailmx.回烧缺陷_烧窑缺陷_烧裂,0)) AS 回烧缺陷_烧窑缺陷_烧裂,
+								to_char(nvl(detailmx.回烧缺陷_烧窑缺陷_针孔,0)) AS 回烧缺陷_烧窑缺陷_针孔,
+								to_char(nvl(detailmx.回烧缺陷_烧窑缺陷_风惊,0)) AS 回烧缺陷_烧窑缺陷_风惊,
+								to_char(nvl(detailmx.回烧缺陷_烧窑缺陷_烧生,0)) AS 回烧缺陷_烧窑缺陷_烧生,
+								to_char(nvl(detailmx.回烧缺陷_烧窑缺陷_串烟,0)) AS 回烧缺陷_烧窑缺陷_串烟,
+								to_char(nvl(detailmx.回烧缺陷_烧窑缺陷_烧坑,0)) AS 回烧缺陷_烧窑缺陷_烧坑,
+								to_char(nvl(detailmx.回烧缺陷_烧窑缺陷_桔釉,0)) AS 回烧缺陷_烧窑缺陷_桔釉,
+								to_char(nvl(detailmx.回烧缺陷_烧窑缺陷_过火,0)) AS 回烧缺陷_烧窑缺陷_过火,
+								to_char(nvl(detailmx.回烧缺陷_烧窑缺陷_火燎,0)) AS 回烧缺陷_烧窑缺陷_火燎,
+								to_char(nvl(detailmx.回烧缺陷_烧窑缺陷_烧走,0)) AS 回烧缺陷_烧窑缺陷_烧走,
+								nvl(f.回烧缺陷_烧窑缺陷_缺陷汇总,0)AS 回烧缺陷_烧窑缺陷_缺陷汇总,
+								DECODE( NVL( f.回烧缺陷_烧窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.回烧缺陷_烧窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 回烧缺陷_烧窑缺陷_缺陷率,
+								TO_CHAR(nvl(detailmx.回烧缺陷_出窑缺陷_磕碰,0))AS 回烧缺陷_出窑缺陷_磕碰,
+								TO_CHAR(nvl(detailmx.回烧缺陷_出窑缺陷_划釉,0))AS 回烧缺陷_出窑缺陷_划釉,
+								nvl(f.回烧缺陷_出窑缺陷_缺陷汇总,0) AS 回烧缺陷_出窑缺陷_缺陷汇总,
+								DECODE( NVL( f.回烧缺陷_出窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.回烧缺陷_出窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 回烧缺陷_出窑缺陷_缺陷率,
+
+								TO_CHAR(nvl(detailmx.回烧修补缺陷_修补不良,0)) AS  回烧缺陷_回烧修补缺陷_修补不良,
+								TO_CHAR(nvl(detailmx.回烧修补缺陷_漏修,0)) AS 回烧缺陷_回烧修补缺陷_漏修,
+								TO_CHAR(nvl(detailmx.回烧修补缺陷_漏检,0)) AS  回烧缺陷_回烧修补缺陷_漏检,
+								TO_CHAR(nvl(detailmx.回烧修补缺陷_白点,0)) AS 回烧缺陷_回烧修补缺陷_白点,
+								nvl(f.回烧修补_缺陷汇总,0) AS 回烧缺陷_回烧修补缺陷_缺陷汇总,
+								DECODE( NVL( f.回烧修补_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.回烧修补_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 回烧缺陷_回烧修补缺陷_缺陷率,
+
+								TO_CHAR(nvl(detailmx.原料缺陷_泥料缺陷_铜脏,0)) AS 原料缺陷_泥料缺陷_铜脏,
+								TO_CHAR(nvl(detailmx.原料缺陷_泥料缺陷_料脏,0)) AS 原料缺陷_泥料缺陷_料脏,
+								TO_CHAR(nvl(detailmx.原料缺陷_釉料缺陷_铜脏,0)) AS 原料缺陷_釉料缺陷_铜脏, 
+								TO_CHAR(nvl(detailmx.原料缺陷_釉料缺陷_铁脏,0)) AS 原料缺陷_釉料缺陷_铁脏,
+								nvl(f.原料缺陷_缺陷汇总,0) AS 原料缺陷__缺陷汇总,
+								DECODE( NVL( f.原料缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.原料缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 原料缺陷__缺陷率,
+								to_char(nvl(detailmx.其他_隧道窑其他试验不良,0)) AS 其他_隧道窑其他_试验不良,
+								nvl(f.其他_缺陷汇总,0) AS 其他_隧道窑其他_缺陷汇总,
+								DECODE( NVL( f.其他_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.其他_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 其他_隧道窑其他_缺陷率
+								FROM 检验数
+									LEFT JOIN 产品 ON 检验数.GOODSCODE=产品.GOODSCODE
+									LEFT JOIN  产品明细缺陷  detailmx ON 产品.GOODSCODE=detailmx.GOODSCODE
+									LEFT JOIN 产品汇总缺陷 f ON f.GOODSCODE=产品.GOODSCODE 
+									LEFT JOIN  打磨擦洗出窑数  ON 1=1
+											UNION ALL
+									SELECT
+								to_Char(检验数.GOODSCODE),
+								to_Char(检验数.GOODSNAME),
+								to_Char(产品.GOODSSPECIFICATION),
+								to_Char(产品.GOODSTYPENAME),
+								to_Char(产品.LUSTERWAREWEIGHT),
+								to_Char(检验数.检验量),to_Char(检验数.出窑重量),
+								to_Char(检验数.合格量),
+								to_Char(检验数.合格品重量),
+								to_Char(检验数.残品),
+								to_Char(检验数.残品重量),
+								DECODE( NVL( 检验数.合格量, 0 ), 0, '0%', TO_CHAR( ( NVL( 检验数.合格量, 0 ) / DECODE( NVL(检验数.检验量, 1 ), 0, 1, NVL(检验数.检验量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 合格率,
+								DECODE( NVL( detailmx.成型半检缺陷_坯脏, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_坯脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_棕眼, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_棕眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_裂底, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_裂底, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_裂圈, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_裂圈, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_裂鼻子, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_裂鼻子, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_裂水道, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_裂水道, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_裂管, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_裂管, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_沾接裂, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_沾接裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_裂眼, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_裂眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_糙活, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_糙活, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_变形, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_变形, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_渣, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_渣, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_管道渣, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_管道渣, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_孔眼不良, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_孔眼不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_堵眼, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_堵眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_眼歪, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_眼歪, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_丢气孔, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_丢气孔, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_丢眼, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_丢眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_漏气, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_漏气, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_空泡, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_空泡, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_水封不良, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_水封不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_漏水, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_漏水, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_卡球, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_卡球, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_冲刷不好, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_冲刷不好, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_泥埂, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_泥埂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_断浆迹, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_断浆迹, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_模迹, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_模迹, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_重皮, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_重皮, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_气泡, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_气泡, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_眼扁, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_眼扁, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_水绺, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_水绺, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_裂, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_活糙, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_活糙, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_贴码不良, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_贴码不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_干补不良, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_干补不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_内漏不合格, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_内漏不合格, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_外漏不合格, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_外漏不合格, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_试水不合格, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_试水不合格, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.成型半检缺陷_梭式窑其他蹦脏, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.成型半检缺陷_梭式窑其他蹦脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.成型半检缺陷__缺陷汇总,
+								DECODE( NVL( f.成型半检缺陷__缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.成型半检缺陷__缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 成型半检缺陷__缺陷率,
+DECODE( NVL( detailmx.精修缺陷_打磨缺陷_糙活, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_打磨缺陷_糙活, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_打磨缺陷_变形, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_打磨缺陷_变形, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_打磨缺陷_渣, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_打磨缺陷_渣, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_打磨缺陷_管道渣, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_打磨缺陷_管道渣, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_打磨缺陷_孔眼不良, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_打磨缺陷_孔眼不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_打磨缺陷_睹眼, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_打磨缺陷_睹眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_打磨缺陷_眼歪, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_打磨缺陷_眼歪, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_打磨缺陷_丢气孔, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_打磨缺陷_丢气孔, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_打磨缺陷_丢眼, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_打磨缺陷_丢眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_打磨缺陷_水封不良, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_打磨缺陷_水封不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_打磨缺陷_卡球, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_打磨缺陷_卡球, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_打磨缺陷_活糙, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_打磨缺陷_活糙, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.精修缺陷_打磨缺陷_缺陷汇总,
+								DECODE( NVL( f.精修缺陷_打磨缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.精修缺陷_打磨缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 精修缺陷_打磨缺陷_缺陷率,
+DECODE( NVL( detailmx.精修缺陷_刷洗缺陷_坯脏, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_刷洗缺陷_坯脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_刷洗缺陷_棕眼, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_刷洗缺陷_棕眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_刷洗缺陷_裂底, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_刷洗缺陷_裂底, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_刷洗缺陷_裂圈, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_刷洗缺陷_裂圈, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_刷洗缺陷_裂鼻子, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_刷洗缺陷_裂鼻子, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_刷洗缺陷_裂水道, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_刷洗缺陷_裂水道, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_刷洗缺陷_裂管, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_刷洗缺陷_裂管, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_刷洗缺陷_沾接裂, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_刷洗缺陷_沾接裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_刷洗缺陷_裂眼, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_刷洗缺陷_裂眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_刷洗缺陷_糙活, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_刷洗缺陷_糙活, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_刷洗缺陷_断浆迹, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_刷洗缺陷_断浆迹, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_刷洗缺陷_活糙, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_刷洗缺陷_活糙, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.精修缺陷_刷洗缺陷_裂, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.精修缺陷_刷洗缺陷_裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.精修缺陷_刷洗缺陷_缺陷汇总,
+								DECODE( NVL( f.精修缺陷_刷洗缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.精修缺陷_刷洗缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 精修缺陷_刷洗缺陷_缺陷率,
+DECODE( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_滚釉, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_滚釉, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_釉薄, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_釉薄, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_釉不匀, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_釉不匀, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_釉磕, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_釉磕, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_釉脏, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_釉脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_釉沾, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_釉沾, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_釉绺, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_釉绺, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_针孔, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_针孔, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_色脏, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_施釉缺陷_色脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+	f.施釉擦坯缺陷_施釉缺陷_缺陷汇总,
+								DECODE( NVL( f.施釉擦坯缺陷_施釉缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.施釉擦坯缺陷_施釉缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 施釉擦坯缺陷_施釉缺陷_缺陷率,
+DECODE( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_灌釉不良, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_灌釉不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_擦脏, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_擦脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_崩标, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_崩标, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_倒标, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_倒标, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_标污, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_标污, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_错标, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_错标, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_丢标, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_丢标, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_标错位, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_标错位, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_未灌釉, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_未灌釉, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_灌磕, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_灌磕, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_坯磕, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_坯磕, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_碱石, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.施釉擦坯缺陷_擦坯缺陷_碱石, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+	f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总,
+								DECODE( NVL( f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 施釉擦坯缺陷_擦坯缺陷_缺陷率,
+DECODE( NVL( detailmx.回烧缺陷_装窑缺陷_落脏, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_装窑缺陷_落脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_装窑缺陷_装沾, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_装窑缺陷_装沾, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_装窑缺陷_装磕, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_装窑缺陷_装磕, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_装窑缺陷_装裂, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_装窑缺陷_装裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_装窑缺陷_装走, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_装窑缺陷_装走, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_装窑缺陷_装脏, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_装窑缺陷_装脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_装窑缺陷_缺釉, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_装窑缺陷_缺釉, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_装窑缺陷_板折, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_装窑缺陷_板折, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.回烧缺陷_装窑缺陷_缺陷汇总,
+								DECODE( NVL( f.回烧缺陷_装窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.回烧缺陷_装窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 回烧缺陷_装窑缺陷_缺陷率,
+DECODE( NVL( detailmx.回烧缺陷_烧窑缺陷_水滴, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_烧窑缺陷_水滴, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_烧窑缺陷_窑脏, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_烧窑缺陷_窑脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_烧窑缺陷_烧裂, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_烧窑缺陷_烧裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_烧窑缺陷_针孔, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_烧窑缺陷_针孔, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_烧窑缺陷_风惊, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_烧窑缺陷_风惊, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_烧窑缺陷_烧生, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_烧窑缺陷_烧生, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_烧窑缺陷_串烟, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_烧窑缺陷_串烟, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_烧窑缺陷_烧坑, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_烧窑缺陷_烧坑, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_烧窑缺陷_桔釉, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_烧窑缺陷_桔釉, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_烧窑缺陷_过火, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_烧窑缺陷_过火, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_烧窑缺陷_火燎, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_烧窑缺陷_火燎, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_烧窑缺陷_烧走, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_烧窑缺陷_烧走, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.回烧缺陷_烧窑缺陷_缺陷汇总,
+								DECODE( NVL( f.回烧缺陷_烧窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.回烧缺陷_烧窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 回烧缺陷_烧窑缺陷_缺陷率,
+DECODE( NVL( detailmx.回烧缺陷_出窑缺陷_磕碰, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_出窑缺陷_磕碰, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧缺陷_出窑缺陷_划釉, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧缺陷_出窑缺陷_划釉, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.回烧缺陷_出窑缺陷_缺陷汇总,
+								DECODE( NVL( f.回烧缺陷_出窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.回烧缺陷_出窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 回烧缺陷_出窑缺陷_缺陷率,
+
+DECODE( NVL( detailmx.回烧修补缺陷_修补不良, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧修补缺陷_修补不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧修补缺陷_漏修, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧修补缺陷_漏修, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧修补缺陷_漏检, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧修补缺陷_漏检, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.回烧修补缺陷_白点, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.回烧修补缺陷_白点, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.回烧修补_缺陷汇总,
+								DECODE( NVL( f.回烧修补_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.回烧修补_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 回烧修补缺陷__缺陷率,
+
+DECODE( NVL( detailmx.原料缺陷_泥料缺陷_铜脏, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.原料缺陷_泥料缺陷_铜脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.原料缺陷_泥料缺陷_料脏, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.原料缺陷_泥料缺陷_料脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.原料缺陷_釉料缺陷_铜脏, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.原料缺陷_釉料缺陷_铜脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( detailmx.原料缺陷_釉料缺陷_铁脏, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.原料缺陷_釉料缺陷_铁脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.原料缺陷_缺陷汇总 AS 原料缺陷__缺陷汇总,
+								DECODE( NVL( f.原料缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.原料缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 原料缺陷__缺陷率,
+
+DECODE( NVL( detailmx.其他_隧道窑其他试验不良, 0 ), 0, '0%', TO_CHAR( ( NVL( detailmx.其他_隧道窑其他试验不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+	f.其他_缺陷汇总 AS 其他_缺陷汇总,
+								DECODE( NVL( f.其他_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.其他_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 其他_缺陷率
+							FROM 检验数
+									LEFT JOIN 产品 ON 检验数.GOODSCODE=产品.GOODSCODE
+									LEFT JOIN  产品明细缺陷  detailmx ON 产品.GOODSCODE=detailmx.GOODSCODE
+									LEFT JOIN 产品汇总缺陷 f ON f.GOODSCODE=产品.GOODSCODE 
+									LEFT JOIN  打磨擦洗出窑数  ON 1=1
+								WHERE 检验数.GOODSCODE='总计'
+		UNION ALL	SELECT
+								'工序出窑量' AS  产品编码,
+								'' 产品名称,
+								'' 产品规格,
+								''产品类别,
+								'' 重量,
+								'' 检验量,'',
+								'' 合格量,'',
+								'' 残品,'',
+								'' 合格率,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__坯脏,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__棕眼,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂底,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂圈,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂鼻子,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂水道,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂管,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__沾接裂,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂眼,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__糙活,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__变形,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__渣,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__管道渣,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__孔眼不良,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__堵眼,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__眼歪,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__丢气孔,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__丢眼,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__漏气,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__空泡,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__水封不良,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__漏水,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__卡球,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__冲刷不好,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__泥埂,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__断浆迹,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__模迹,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__重皮,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__气泡,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__眼扁,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__水绺,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__裂,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__活糙,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__贴码不良,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__干补不良,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__内漏不合格,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__外漏不合格,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__试水不合格,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__蹦脏,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__缺陷汇总,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__缺陷率,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_糙活,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_变形,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_渣,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_管道渣,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_孔眼不良,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_睹眼,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_眼歪,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_丢气孔,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_丢眼,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_水封不良,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_卡球,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_活糙,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_缺陷汇总,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_缺陷率,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_坯脏,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_棕眼,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂底,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂圈,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂鼻子,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂水道,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂管,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_沾接裂,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂眼,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_糙活,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_断浆迹,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_活糙,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_缺陷汇总,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_缺陷率,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_滚釉,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉薄,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉不匀,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉磕,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉脏,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉沾,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉绺,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_针孔,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_色脏,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_缺陷汇总,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_缺陷率,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_灌釉不良,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_擦脏,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_崩标,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_倒标,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_标污,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_错标,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_丢标,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_标错位,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_未灌釉,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_灌磕,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_坯磕,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_碱石,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_缺陷汇总,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_缺陷率,
+								TO_CHAR(检验数.检验量)		 AS 回烧缺陷_装窑缺陷_落脏,
+								TO_CHAR(检验数.检验量)		 AS 回烧缺陷_装窑缺陷_装沾,
+								TO_CHAR(检验数.检验量)		 AS 回烧缺陷_装窑缺陷_装磕,
+								TO_CHAR(检验数.检验量)		 AS 回烧缺陷_装窑缺陷_装裂,
+								TO_CHAR(检验数.检验量)		 AS 回烧缺陷_装窑缺陷_装走,
+								TO_CHAR(检验数.检验量)		 AS 回烧缺陷_装窑缺陷_装脏,
+								TO_CHAR(检验数.检验量)		 AS 回烧缺陷_装窑缺陷_缺釉,
+								TO_CHAR(检验数.检验量)		 AS 回烧缺陷_装窑缺陷_板折,
+								TO_CHAR(检验数.检验量)		 AS 回烧缺陷_装窑缺陷_缺陷汇总,
+								TO_CHAR(检验数.检验量)		 AS 回烧缺陷_装窑缺陷_缺陷率,
+								to_char(检验数.检验量)		 AS 回烧缺陷_烧窑缺陷_水滴,
+								to_char(检验数.检验量)		 AS 回烧缺陷_烧窑缺陷_窑脏,
+								to_char(检验数.检验量)		 AS 回烧缺陷_烧窑缺陷_烧裂,
+								to_char(检验数.检验量)		 AS 回烧缺陷_烧窑缺陷_针孔,
+								to_char(检验数.检验量)		 AS 回烧缺陷_烧窑缺陷_风惊,
+								to_char(检验数.检验量)		 AS 回烧缺陷_烧窑缺陷_烧生,
+								to_char(检验数.检验量)		 AS 回烧缺陷_烧窑缺陷_串烟,
+								to_char(检验数.检验量)		 AS 回烧缺陷_烧窑缺陷_烧坑,
+								to_char(检验数.检验量)		 AS 回烧缺陷_烧窑缺陷_桔釉,
+								to_char(检验数.检验量)		 AS 回烧缺陷_烧窑缺陷_过火,
+								to_char(检验数.检验量)		 AS 回烧缺陷_烧窑缺陷_火燎,
+								to_char(检验数.检验量)		 AS 回烧缺陷_烧窑缺陷_烧走,
+								to_char(检验数.检验量)		 AS 回烧缺陷_烧窑缺陷_缺陷汇总,
+								to_char(检验数.检验量)		 AS 回烧缺陷_烧窑缺陷_缺陷率,
+								to_char(检验数.检验量)		 AS 回烧缺陷_出窑缺陷_磕碰,
+								to_char(检验数.检验量)		 AS 回烧缺陷_出窑缺陷_划釉,
+								to_char(检验数.检验量)		 AS 回烧缺陷_出窑缺陷_缺陷汇总,
+								to_char(检验数.检验量)		 AS 回烧缺陷_出窑缺陷_缺陷率,
+								to_char(检验数.检验量)		 AS 回烧修补缺陷_修补不良,
+								to_char(检验数.检验量)		 AS 回烧修补缺陷_漏修,
+								to_char(检验数.检验量)		 AS 回烧修补缺陷_漏检,
+								to_char(检验数.检验量)		 AS 回烧修补缺陷_白点,
+								to_char(检验数.检验量)		 AS 回烧修补_缺陷汇总,
+								to_char(检验数.检验量)		 AS 回烧修补缺陷_缺陷率,
+								to_char(检验数.检验量)		 AS 原料缺陷_泥料缺陷_铜脏,
+								to_char(检验数.检验量)		 AS 原料缺陷_泥料缺陷_料脏,
+								to_char(检验数.检验量)		 AS 原料缺陷_釉料缺陷_铜脏, 
+								to_char(检验数.检验量)		 AS 原料缺陷_釉料缺陷_铁脏,
+								to_char(检验数.检验量)		 AS 原料缺陷__缺陷汇总,
+								to_char(检验数.检验量)		 AS 原料缺陷__缺陷率,
+
+								to_char(检验数.检验量)		 AS 其他_隧道窑其他_试验不良,
+								to_char(检验数.检验量)		 AS 其他__缺陷汇总,
+								to_char(检验数.检验量)		 AS 其他__缺陷率
+								FROM 检验数 
+									LEFT JOIN  打磨擦洗出窑数  ON 1=1
+									WHERE 检验数.GOODSCODE='总计'
+)
+ORDER BY 产品类别,产品编码";
+
+                }
+                else if(context.Request["procedureMaster"] == "3")
+                {
+                    sqlStr = @"WITH 
+							产品汇总缺陷 AS ( 
+												SELECT 	
+														 CASE WHEN  GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =5   THEN '小计'
+											WHEN  GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =6  AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001001' THEN '大件合计'
+											WHEN  GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =6  AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001002' THEN '小件合计'
+											WHEN  GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =7   THEN '总计'
+														ELSE to_char(good.GOODSCODE) END AS GOODSCODE,
+									GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME) AS GID,
+									good.GOODSSPECIFICATION,
+									good.GOODSNAME,
+										CASE WHEN GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6))=6 AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001001' THEN '大件' 
+										 WHEN GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6))=6 AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001002' THEN '小件'
+										 ELSE TO_CHAR(gtp.GOODSTYPENAME )END GOODSTYPENAME,
+									SUBSTR(gtp.GOODSTYPECODE, 0, 6)  AS GOODSTYPECODE,
+									TO_CHAR(COUNT( DISTINCT CASE WHEN  df.DEFECTCODE IN ('01','02','03','04','05','06','07','08','09','10','12','13','14','15','16','17','18','19','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','001','002','099','99','1' ,'2' ,'3' ) AND PDS.VALUEFLAG=1   THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 成型半检缺陷__缺陷汇总,
+									
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN PDS.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '10', '12', '13', '14', '15', '16', '17', '18', '19', '23', '25', '35' ) AND PDS.VALUEFLAG=1 THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 精修缺陷_打磨缺陷_缺陷汇总,
+									
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN PDS.PROCEDUREID IN (5,36,52)  AND PDS.VALUEFLAG=1 AND df.DEFECTCODE IN ( '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '28', '34', '35') THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 精修缺陷_刷洗缺陷_缺陷汇总,
+									
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN df.DEFECTCODE IN ( '36','37','38','39','40','41','42','43','44') THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 施釉擦坯缺陷_施釉缺陷_缺陷汇总,
+																
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN df.DEFECTCODE IN ( '47','48','49','50','51','52','53','54','55','56','20','57')AND MDF.DEFECTCODE IS NOT NULL AND DF.BARCODE IS NOT NULL  THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END ))AS 施釉擦坯缺陷_擦坯缺陷_缺陷汇总,
+																
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN df.DEFECTCODE IN ( '61','62','63','64','65','66','67', '11') THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 烧成缺陷_装窑缺陷_缺陷汇总,
+									
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN df.DEFECTCODE IN ( '69','70','71','43','73','74','75','76','77','78','79','80') THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END ))AS 烧成缺陷_烧窑缺陷_缺陷汇总,
+									
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN df.DEFECTCODE IN ( '83','84')  THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 烧成缺陷_出窑缺陷_缺陷汇总,
+
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '86', '87','086', '88'  ) THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 原料缺陷_缺陷汇总,
+
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '91', '92', '93', '083', '084') THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 冷修_缺陷汇总,
+					
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '091', '092', '093', '96') THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 回烧修补_缺陷汇总,
+									
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '061', '062', '063', '064', '065', '066', '067', '011' ) THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 回烧装窑_缺陷汇总,
+								
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '069', '070', '071', '43', '073', '074', '075', '076', '077', '078', '079', '080' ) THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 回烧烧窑_缺陷汇总,
+								
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '0083', '0084' ) THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 回烧出窑_缺陷汇总,
+									
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '98'  ) THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 研磨_缺陷汇总,									
+									
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '99', '100') THEN to_char(pd.productiondataid || DF.BARCODE||df.DEFECTCODE ) ELSE NULL END )) AS 其他_缺陷汇总
+
+							FROM
+								TP_PM_DEFECT df
+									LEFT JOIN (SELECT   pd1.goodsname
+														 ,pd1.groutingdailydetailid
+														 ,pd1.goodsid
+														 ,pd1.goodscode 
+														 ,pd1.groutinguserid
+														 ,pd1.groutingusercode
+														 ,pd1.createtime
+														 ,pd1.procedureid
+														 ,pd1.kilncarbatchno
+														 ,pd1.barcode
+														 ,pd1.valueflag 
+														 ,nvl(pd61.productiondataid, pd1.productiondataid) productiondataid
+														 ,pd1.productiondataid  fproductiondataid
+											FROM (SELECT *
+													FROM (SELECT pd28.goodsname
+																,pd28.groutingdailydetailid
+																,pd28.goodsid
+																,pd28.goodscode
+																,pd28.goodsleveltypeid
+																,pd28.groutinguserid
+																,pd28.groutingusercode
+																,pd28.createtime
+																,pd24.procedureid
+																,pd28.kilncarbatchno
+																,pd28.barcode
+																,pd28.productiondataid
+																,pd28.valueflag
+																,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+															FROM tp_pm_productiondata pd28 -- 重烧质量登记
+														   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
+															  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+														   WHERE pd28.procedureid = 16
+															 AND pd28.valueflag = 1
+															 AND pd24.valueflag = 1
+															 AND pd24.procedureid IN (55, 13, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+															 AND pd28.CREATETIME >= @DATEBEGIN@
+															 AND pd28.CREATETIME <=   @DATEEND@ 
+															 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )
+															 AND pd24.productiondataid < pd28.productiondataid) t
+												   WHERE rownums = 1
+													 AND t.procedureid  IN (55, 13)) pd1
+											LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
+											  ON pd61.procedureid = 60
+											 AND pd61.valueflag = 1
+											 AND pd61.groutingdailydetailid = pd1.groutingdailydetailid
+											 AND pd61.kilncarbatchno = pd1.kilncarbatchno
+											 AND pd61.productiondataid > pd1.productiondataid
+												-- 取最近的数据
+											 AND NOT EXISTS (SELECT 1
+													FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
+												   WHERE pd28c.procedureid = 16
+													 AND pd28c.valueflag = 1
+													 AND pd28c.groutingdailydetailid = pd1.groutingdailydetailid
+													 AND pd28c.kilncarbatchno = pd1.kilncarbatchno
+													 AND pd28c.productiondataid > pd1.productiondataid
+													 AND pd28c.productiondataid < pd61.productiondataid)) pd
+								  ON df.productiondataid in (pd.productiondataid ,pd.fproductiondataid)
+									INNER JOIN TP_PM_PRODUCTIONDATA PDS ON PDS.BARCODE=PD.BARCODE AND pds.valueflag = 1
+									LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
+									LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
+									 LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID 
+											WHERE df.VALUEFLAG=1  
+												AND PD.CREATETIME >= @DATEBEGIN@
+												AND PD.CREATETIME <=  @DATEEND@  AND DF.PROCEDUREID NOT IN " + notInproc;
+                    sqlStr += @"GROUP BY
+												Grouping sets ( ( good.GOODSCODE, good.GOODSNAME,good.GOODSSPECIFICATION,gtp.GOODSTYPENAME ), ( gtp.GOODSTYPENAME) ,(SUBSTR(gtp.GOODSTYPECODE, 0, 6)),()) 
+											),
+											产品明细缺陷 AS (
+											SELECT			GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)),
+								 CASE WHEN  GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =5   THEN '小计'
+											WHEN  GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =6   AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001001' THEN '大件合计'
+											WHEN  GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =6   AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001002' THEN '小件合计'
+											WHEN  GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =7   THEN '总计'
+														ELSE to_char(GD.GOODSCODE) END AS GOODSCODE,
+									GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME) AS GID,
+								gd.GOODSNAME,
+								CASE WHEN GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6))=6 AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001001' THEN '大件' 
+										 WHEN GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6))=6 AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001002' THEN '小件'
+										 ELSE TO_CHAR(gtp.GOODSTYPENAME )END GOODSTYPENAME,
+								SUBSTR(gtp.GOODSTYPECODE, 0, 6)  AS GOODSTYPECODE,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '01' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_坯脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '02' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_棕眼,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '03' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂底,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '04' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂圈,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '05' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂鼻子,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '06' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂水道,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '07' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂管,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '08' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_沾接裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '09' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂眼,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '10' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_糙活,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '12' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_变形,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '13' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_渣,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '14' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_管道渣,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '15' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_孔眼不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '16' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_堵眼,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '17' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_眼歪,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '18' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_丢气孔,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '19' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_丢眼,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '21' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_漏气,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '22' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_空泡,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '23' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_水封不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '24' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_漏水,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '25' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_卡球,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '26' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_冲刷不好,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '27' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_泥埂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '28' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_断浆迹,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '29' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_模迹,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '30' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_重皮,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '31' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_气泡,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '32' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_眼扁,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '33' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_水绺,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '34' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '35' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_活糙,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '001' ) THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_贴码不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '002' ) THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_干补不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '1' )   THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_内漏不合格,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '2' )   THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_外漏不合格,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '3' )   THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_试水不合格,
+
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '10' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_糙活,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '12' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_变形,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '13' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_渣,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '14' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_管道渣,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '15' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_孔眼不良,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '16' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_睹眼,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '17' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_眼歪,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '18' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_丢气孔,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '19' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_丢眼,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '23' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_水封不良,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '25' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_卡球,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '35' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_活糙,
+
+
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '01' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_坯脏,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '02' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_棕眼,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '03' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂底,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '04' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂圈,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '05' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂鼻子,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '06' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂水道,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '07' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂管,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '08' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_沾接裂,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '09' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂眼,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '10' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_糙活,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '28' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_断浆迹,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '34' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂,
+count( DISTINCT CASE WHEN PDS.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '35' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_活糙,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '36' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_滚釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '37' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉薄,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '38' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉不匀,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '39' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉磕,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '40' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '41' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉沾,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '42' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉绺,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '43' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_针孔,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '44' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_色脏,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '47' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_灌釉不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '48' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_擦脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '49' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_崩标,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '50' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_倒标,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '51' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_标污,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '52' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_错标,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '53' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_丢标,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '54' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_标错位,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '55' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_未灌釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '56' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_灌磕,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '20' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_坯磕,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '57' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_碱石,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '61' ) AND PDS.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_落脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '62' ) AND PDS.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_装沾,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '63' ) AND PDS.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_装磕,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '64' ) AND PDS.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_装裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '65' ) AND PDS.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_装走,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '66' ) AND PDS.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_装脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '67' ) AND PDS.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_缺釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '11' ) AND PDS.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_板折,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '69' ) AND PDS.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_水滴,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '70' ) AND PDS.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_窑脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '71' ) AND PDS.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_烧裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '43' ) AND PDS.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_针孔,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '73' ) AND PDS.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_风惊,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '74' ) AND PDS.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_烧生,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '75' ) AND PDS.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_串烟,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '76' ) AND PDS.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_烧坑,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '77' ) AND PDS.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_桔釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '78' ) AND PDS.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_过火,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '79' ) AND PDS.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_火燎,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '80' ) AND PDS.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_烧走,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '83' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_出窑缺陷_磕碰,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '84' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_出窑缺陷_划釉,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '86' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 原料缺陷_泥料缺陷_铜脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '87' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 原料缺陷_泥料缺陷_料脏,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '086' ) THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 原料缺陷_釉料缺陷_铜脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '88' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 原料缺陷_釉料缺陷_铁脏,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '91' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 冷修缺陷_修补不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '92' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 冷修缺陷_漏修,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '93' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 冷修缺陷_漏检,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '083' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 冷修缺陷_磕碰,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '084' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 冷修缺陷_划釉,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '091' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧修补缺陷_修补不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '092' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧修补缺陷_漏修,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '093' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧修补缺陷_漏检,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '96' )   THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧修补缺陷_白点,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '061' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_落脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '062' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_装沾,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '063' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_装磕,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '064' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_装裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '065' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_装走,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '066' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_装脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '067' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_缺釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '011' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_板折,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '069' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_水滴,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '070' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_窑脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '071' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_烧裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '43' )   THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_针孔,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '073' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_风惊,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '074' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_烧生,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '075' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_串烟,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '076' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_烧坑,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '077' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_桔釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '078' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_过火,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '079' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_火燎,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '080' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_烧走,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '0083')  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_出窑缺陷_磕碰,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '0084')  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_出窑缺陷_划釉,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '98' )   THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 研磨缺陷_研磨不良,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '99' )   THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_隧道窑其他蹦脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '100' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 其他_隧道窑其他试验不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '099' )  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_梭式窑其他蹦脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '0100')  THEN (pd.productiondataid || DF.BARCODE || df.DEFECTCODE) ELSE NULL END ) AS 其他_梭式窑其他试验不良
+							FROM
+								TP_PM_DEFECT df
+									LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gd ON  df.BARCODE = gd.BARCODE 
+									LEFT JOIN (SELECT   pd1.goodsname
+														 ,pd1.groutingdailydetailid
+														 ,pd1.goodsid
+														 ,pd1.goodscode 
+														 ,pd1.groutinguserid
+														 ,pd1.groutingusercode
+														 ,pd1.createtime
+														 ,pd1.procedureid
+														 ,pd1.kilncarbatchno
+														 ,pd1.barcode
+														 ,pd1.valueflag 
+														 ,nvl(pd61.productiondataid, pd1.productiondataid) productiondataid
+														 ,pd1.productiondataid  fproductiondataid
+											FROM (SELECT *
+													FROM (SELECT pd28.goodsname
+																,pd28.groutingdailydetailid
+																,pd28.goodsid
+																,pd28.goodscode
+																,pd28.goodsleveltypeid
+																,pd28.groutinguserid
+																,pd28.groutingusercode
+																,pd28.createtime
+																,pd24.procedureid
+																,pd28.kilncarbatchno
+																,pd28.barcode
+																,pd28.productiondataid
+																,pd28.valueflag
+																,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+															FROM tp_pm_productiondata pd28 -- 重烧质量登记
+														   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
+															  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+														   WHERE pd28.procedureid = 16
+															 AND pd28.valueflag = 1
+															 AND pd24.valueflag = 1
+															 AND pd24.procedureid IN (55, 13, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+															 AND pd28.CREATETIME >= @DATEBEGIN@
+															 AND pd28.CREATETIME <=   @DATEEND@ 
+															 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )
+															 AND pd24.productiondataid < pd28.productiondataid) t
+												   WHERE rownums = 1
+													 AND t.procedureid in (55, 13)) pd1
+											LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
+											  ON pd61.procedureid = 60
+											 AND pd61.valueflag = 1
+											 AND pd61.groutingdailydetailid = pd1.groutingdailydetailid
+											 AND pd61.kilncarbatchno = pd1.kilncarbatchno
+											 AND pd61.productiondataid > pd1.productiondataid
+												-- 取最近的数据
+											 AND NOT EXISTS (SELECT 1
+													FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
+												   WHERE pd28c.procedureid = 16
+													 AND pd28c.valueflag = 1
+													 AND pd28c.groutingdailydetailid = pd1.groutingdailydetailid
+													 AND pd28c.kilncarbatchno = pd1.kilncarbatchno
+													 AND pd28c.productiondataid > pd1.productiondataid
+													 AND pd28c.productiondataid < pd61.productiondataid)) pd
+								  ON df.productiondataid in (pd.productiondataid ,pd.fproductiondataid)
+									INNER JOIN TP_PM_PRODUCTIONDATA PDS ON PDS.BARCODE=PD.BARCODE AND pds.valueflag = 1
+									LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
+									LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
+									LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID 
+							WHERE
+												df.VALUEFLAG=1 
+												AND PD.CREATETIME >= @DATEBEGIN@
+												AND PD.CREATETIME <=  @DATEEND@   AND DF.PROCEDUREID NOT IN " + notInproc;
+                    sqlStr += @"	GROUP BY
+												Grouping sets ( ( gd.GOODSCODE, gd.GOODSNAME,gtp.GOODSTYPENAME ), ( gtp.GOODSTYPENAME) ,(SUBSTR(gtp.GOODSTYPECODE, 0, 6)),()    ) 
+								),
+								检验数 AS (	SELECT
+GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX),
+ CASE WHEN  GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX) =5   THEN '小计'
+			WHEN  GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX) =6 AND GOODSTYPECODESIX='001001'  THEN '大件合计'
+			WHEN  GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX) =6 AND GOODSTYPECODESIX='001002'  THEN '小件合计'
+			WHEN  GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX) =7   THEN '总计'
+													 ELSE to_char(GOODSCODE) END AS GOODSCODE,
+CASE WHEN GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX)=6 AND GOODSTYPECODESIX='001001' THEN '大件' 
+		 WHEN GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX)=6 AND GOODSTYPECODESIX='001002' THEN '小件'
+										   ELSE TO_CHAR(GOODSTYPENAME )END GOODSTYPENAME,GOODSNAME,
+											  SUM(检验量)检验量,SUM(合格量) 合格量,SUM(残品) 残品,
+											 SUM(检验量*LUSTERWAREWEIGHT) 出窑重量,
+											 SUM(合格量*LUSTERWAREWEIGHT) 合格品重量,
+											 SUM(残品*LUSTERWAREWEIGHT) 残品重量
+FROM(
+SELECT
+									pd.GOODSCODE,
+									SUBSTR(pd.GOODSTYPECODE, 0, 6) GOODSTYPECODESIX,
+									pd.GOODSNAME,
+									PD.GOODSTYPENAME,
+									COUNT(   pd.BARCODE ) AS 检验量,
+									SUM( CASE WHEN PD.GOODSLEVELTYPEID IN ( 4, 5 ) THEN 1 ELSE 0 END ) AS 合格量,
+									SUM( CASE WHEN PD.GOODSLEVELTYPEID  NOT IN ( 4, 5 ) THEN 1 ELSE 0  END ) 残品,
+									LUSTERWAREWEIGHT
+						FROM (SELECT barcode
+													,goodscode
+													,goodsleveltypeid
+													,goodsname
+													,groutinguserid
+													,groutingusercode
+													,goodstypename
+													,goodstypecode
+													,lusterwareweight
+													,createtime
+											  -- ,row_number() over(PARTITION BY barcode ORDER BY createtime DESC) AS rownums
+												FROM (SELECT DISTINCT pd.barcode
+																	 ,pd.goodscode
+																	 ,pd.goodsname
+																	 ,pd.groutinguserid
+																	 ,pd.groutingusercode
+																	 ,gtp.goodstypecode
+																	 ,nvl(pd61.goodsleveltypeid, pd.goodsleveltypeid) goodsleveltypeid
+																	 ,pd.createtime
+																	 ,gtp.goodstypename
+																	 ,good.lusterwareweight
+														FROM (SELECT *
+																FROM (SELECT pd28.goodsname
+																			,pd28.groutingdailydetailid
+																			,pd28.goodsid
+																			,pd28.goodscode
+																			,pd28.goodsleveltypeid
+																			,pd28.groutinguserid
+																			,pd28.groutingusercode
+																			,pd28.createtime
+																			,pd24.procedureid
+																			,pd28.kilncarbatchno
+																			,pd28.barcode
+																			,pd28.productiondataid
+																			,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+																		FROM tp_pm_productiondata pd28 -- 重烧质量登记
+																	   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
+																		  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+																	   WHERE pd28.procedureid = 16
+																		 AND pd28.valueflag = 1
+																		 AND pd24.valueflag = 1
+																		 AND pd24.procedureid IN (55, 13, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+																		 AND pd28.CREATETIME >= @DATEBEGIN@
+																		 AND pd28.CREATETIME <=   @DATEEND@ 
+																		 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )                                                 
+																		 AND pd24.productiondataid < pd28.productiondataid) t
+															   WHERE rownums = 1
+																 AND t.procedureid in (55, 13)) pd
+														LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
+														  ON pd61.procedureid = 60
+														 AND pd61.valueflag = 1
+														 AND pd61.groutingdailydetailid = pd.groutingdailydetailid
+														 AND pd61.kilncarbatchno = pd.kilncarbatchno
+														 AND pd61.productiondataid > pd.productiondataid
+															-- 取最近的数据
+														 AND NOT EXISTS
+													   (SELECT 1
+																FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
+															   WHERE pd28c.procedureid = 16
+																 AND pd28c.valueflag = 1
+																 AND pd28c.groutingdailydetailid = pd.groutingdailydetailid
+																 AND pd28c.kilncarbatchno = pd.kilncarbatchno
+																 AND pd28c.productiondataid > pd.productiondataid
+																 AND pd28c.productiondataid < pd61.productiondataid)
+                          
+														LEFT JOIN tp_mst_goods good
+														  ON good.goodsid = pd.goodsid
+														LEFT JOIN tp_mst_goodstype gtp
+														  ON gtp.goodstypeid = good.goodstypeid                          
+													  )) pd
+
+	GROUP BY pd.GOODSCODE,SUBSTR(pd.GOODSTYPECODE, 0, 6),pd.GOODSNAME,PD.GOODSTYPENAME,LUSTERWAREWEIGHT
+				
+)
+		GROUP BY Grouping sets((GOODSCODE,GOODSNAME,GOODSTYPENAME,GOODSTYPECODESIX),(GOODSTYPENAME),(GOODSTYPECODESIX),())),
+								产品 AS (
+								SELECT TO_CHAR(GOODSCODE) AS GOODSCODE,GOODSNAME,GOODSSPECIFICATION,gtp.GOODSTYPENAME 
+											,TP_MST_GOODS.LUSTERWAREWEIGHT
+								FROM TP_MST_GOODS
+								LEFT JOIN TP_MST_GOODSTYPE gtp ON TP_MST_GOODS.GOODSTYPEID=gtp.GOODSTYPEID
+								 WHERE TP_MST_GOODS.VALUEFLAG=1
+								UNION ALL
+								SELECT '总计' AS GOODSCODE,null,NULL ,NULL,null  FROM dual
+	
+								),
+打磨擦洗出窑数 AS (
+								SELECT  COUNT(DISTINCT CASE WHEN pds.PROCEDUREID IN (4,36,53) THEN PD.productiondataid ELSE NULL END ) 打磨,
+										COUNT(DISTINCT CASE WHEN pds.PROCEDUREID IN (5,36,52) THEN PD.productiondataid ELSE NULL END ) 擦洗,
+										COUNT(DISTINCT CASE WHEN pds.PROCEDUREID =@kilproc@ THEN PD.productiondataid ELSE NULL END ) 质量登记
+								  FROM  ( SELECT * FROM (SELECT pd28.goodsname
+																			,pd28.groutingdailydetailid
+																			,pd28.goodsid
+																			,pd28.goodscode
+																			,pd28.goodsleveltypeid
+																			,pd28.groutinguserid
+																			,pd28.groutingusercode
+																			,pd28.createtime
+																			,pd24.procedureid
+																			,pd28.kilncarbatchno
+																			,pd28.barcode
+																			,pd28.productiondataid
+																			,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+																		FROM tp_pm_productiondata pd28 -- 重烧质量登记
+																	   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
+																		  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+																	   WHERE pd28.procedureid = 16
+																		 AND pd28.valueflag = 1
+																		 AND pd24.valueflag = 1
+																		 AND pd24.procedureid IN (55, 13, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+																		 AND pd28.CREATETIME >= @DATEBEGIN@
+																		 AND pd28.CREATETIME <=   @DATEEND@ 
+																		 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )                                                 
+																		 AND pd24.productiondataid < pd28.productiondataid) t
+															   WHERE rownums = 1
+																 AND t.procedureid in (55, 13) ) pd 
+								 INNER JOIN TP_PM_PRODUCTIONDATA pds ON pds.BARCODE=PD.BARCODE 		 AND pds.valueflag = 1
+								
+	
+								)
+						SELECT * FROM (
+									SELECT
+								to_CHAR(检验数.GOODSCODE) AS  产品编码,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.GOODSNAME) ELSE NULL END 产品名称,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(产品.GOODSSPECIFICATION) ELSE NULL END 产品规格,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.GOODSTYPENAME) ELSE NULL END 产品类别,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(产品.LUSTERWAREWEIGHT) ELSE NULL END 单重,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.检验量) ELSE NULL END 检验量,
+							    CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.出窑重量) ELSE NULL END 出窑重量,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.合格量) ELSE NULL END 合格量,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.合格品重量) ELSE NULL END 合格品重量,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.残品) ELSE NULL END 残品,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.残品重量) ELSE NULL END 残品重量,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN DECODE( NVL( 检验数.合格量, 0 ), 0, '0%', TO_CHAR( ( NVL( 检验数.合格量, 0 ) / DECODE( NVL( 检验数.检验量, 1 ), 0, 1, NVL( 检验数.检验量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) ELSE NULL END AS 合格率,
+								to_char(nvl(s.成型半检缺陷_坯脏,0)) AS 成型半检缺陷__坯脏,
+								to_char(nvl(s.成型半检缺陷_棕眼,0)) AS 成型半检缺陷__棕眼,
+								to_char(nvl(s.成型半检缺陷_裂底,0)) AS 成型半检缺陷__裂底,
+								to_char(nvl(s.成型半检缺陷_裂圈,0)) AS 成型半检缺陷__裂圈,
+								to_char(nvl(s.成型半检缺陷_裂鼻子,0)) AS 成型半检缺陷__裂鼻子,
+								to_char(nvl(s.成型半检缺陷_裂水道,0)) AS 成型半检缺陷__裂水道,
+								to_char(nvl(s.成型半检缺陷_裂管,0)) AS 成型半检缺陷__裂管,
+								to_char(nvl(s.成型半检缺陷_沾接裂,0)) AS 成型半检缺陷__沾接裂,
+								to_char(nvl(s.成型半检缺陷_裂眼,0)) AS 成型半检缺陷__裂眼,
+								to_char(nvl(s.成型半检缺陷_糙活,0)) AS 成型半检缺陷__糙活,
+								to_char(nvl(s.成型半检缺陷_变形,0)) AS 成型半检缺陷__变形,
+								to_char(nvl(s.成型半检缺陷_渣,0)) AS 成型半检缺陷__渣,
+								to_char(nvl(s.成型半检缺陷_管道渣,0)) AS 成型半检缺陷__管道渣,
+								to_char(nvl(s.成型半检缺陷_孔眼不良,0)) AS 成型半检缺陷__孔眼不良,
+								to_char(nvl(s.成型半检缺陷_堵眼,0)) AS 成型半检缺陷__堵眼,
+								to_char(nvl(s.成型半检缺陷_眼歪,0)) AS 成型半检缺陷__眼歪,
+								to_char(nvl(s.成型半检缺陷_丢气孔,0)) AS 成型半检缺陷__丢气孔,
+								to_char(nvl(s.成型半检缺陷_丢眼,0)) AS 成型半检缺陷__丢眼,
+								to_char(nvl(s.成型半检缺陷_漏气,0)) AS 成型半检缺陷__漏气,
+								to_char(nvl(s.成型半检缺陷_空泡,0)) AS 成型半检缺陷__空泡,
+								to_char(nvl(s.成型半检缺陷_水封不良,0)) AS 成型半检缺陷__水封不良,
+								to_char(nvl(s.成型半检缺陷_漏水,0)) AS 成型半检缺陷__漏水,
+								to_char(nvl(s.成型半检缺陷_卡球,0)) AS 成型半检缺陷__卡球,
+								to_char(nvl(s.成型半检缺陷_冲刷不好,0)) AS 成型半检缺陷__冲刷不好,
+								to_char(nvl(s.成型半检缺陷_泥埂,0)) AS 成型半检缺陷__泥埂,
+								to_char(nvl(s.成型半检缺陷_断浆迹,0)) AS 成型半检缺陷__断浆迹,
+								to_char(nvl(s.成型半检缺陷_模迹,0)) AS 成型半检缺陷__模迹,
+								to_char(nvl(s.成型半检缺陷_重皮,0)) AS 成型半检缺陷__重皮,
+								to_char(nvl(s.成型半检缺陷_气泡,0)) AS 成型半检缺陷__气泡,
+								to_char(nvl(s.成型半检缺陷_眼扁,0)) AS 成型半检缺陷__眼扁,
+								to_char(nvl(s.成型半检缺陷_水绺,0)) AS 成型半检缺陷__水绺,
+								to_char(nvl(s.成型半检缺陷_裂,0)) AS 成型半检缺陷__裂,
+								to_char(nvl(s.成型半检缺陷_活糙,0)) AS 成型半检缺陷__活糙,
+								to_char(nvl(s.成型半检缺陷_贴码不良,0)) AS 成型半检缺陷__贴码不良,
+								to_char(nvl(s.成型半检缺陷_干补不良,0)) AS 成型半检缺陷__干补不良,
+								to_char(nvl(s.成型半检缺陷_内漏不合格,0)) AS 成型半检缺陷__内漏不合格,
+								to_char(nvl(s.成型半检缺陷_外漏不合格,0)) AS 成型半检缺陷__外漏不合格,
+								to_char(nvl(s.成型半检缺陷_试水不合格,0)) AS 成型半检缺陷__试水不合格,
+								to_char(nvl(s.成型半检缺陷_隧道窑其他蹦脏,0)) AS 成型半检缺陷__蹦脏,
+								nvl(f.成型半检缺陷__缺陷汇总,0) AS 成型半检缺陷__缺陷汇总,
+								DECODE( NVL( f.成型半检缺陷__缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.成型半检缺陷__缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 成型半检缺陷__缺陷率,
+								to_char(nvl(s.精修缺陷_打磨缺陷_糙活,0)) AS 精修缺陷_打磨缺陷_糙活,
+								to_char(nvl(s.精修缺陷_打磨缺陷_变形,0)) AS 精修缺陷_打磨缺陷_变形,
+								to_char(nvl(s.精修缺陷_打磨缺陷_渣,0)) AS 精修缺陷_打磨缺陷_渣,
+								to_char(nvl(s.精修缺陷_打磨缺陷_管道渣,0)) AS 精修缺陷_打磨缺陷_管道渣,
+								to_char(nvl(s.精修缺陷_打磨缺陷_孔眼不良,0)) AS 精修缺陷_打磨缺陷_孔眼不良,
+								to_char(nvl(s.精修缺陷_打磨缺陷_睹眼,0)) AS 精修缺陷_打磨缺陷_睹眼,
+								to_char(nvl(s.精修缺陷_打磨缺陷_眼歪,0)) AS 精修缺陷_打磨缺陷_眼歪,
+								to_char(nvl(s.精修缺陷_打磨缺陷_丢气孔,0)) AS 精修缺陷_打磨缺陷_丢气孔,
+								to_char(nvl(s.精修缺陷_打磨缺陷_丢眼,0)) AS 精修缺陷_打磨缺陷_丢眼,
+								to_char(nvl(s.精修缺陷_打磨缺陷_水封不良,0)) AS 精修缺陷_打磨缺陷_水封不良,
+								to_char(nvl(s.精修缺陷_打磨缺陷_卡球,0)) AS 精修缺陷_打磨缺陷_卡球,
+								to_char(nvl(s.精修缺陷_打磨缺陷_活糙,0)) AS 精修缺陷_打磨缺陷_活糙,
+								nvl(f.精修缺陷_打磨缺陷_缺陷汇总,0) AS 精修缺陷_打磨缺陷_缺陷汇总,
+								DECODE( NVL( f.精修缺陷_打磨缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.精修缺陷_打磨缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 精修缺陷_打磨缺陷_缺陷率,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_坯脏,0)) AS 精修缺陷_刷洗缺陷_坯脏,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_棕眼,0)) AS 精修缺陷_刷洗缺陷_棕眼,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_裂底,0)) AS 精修缺陷_刷洗缺陷_裂底,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_裂圈,0)) AS 精修缺陷_刷洗缺陷_裂圈,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_裂鼻子,0)) AS 精修缺陷_刷洗缺陷_裂鼻子,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_裂水道,0)) AS 精修缺陷_刷洗缺陷_裂水道,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_裂管,0)) AS 精修缺陷_刷洗缺陷_裂管,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_沾接裂,0)) AS 精修缺陷_刷洗缺陷_沾接裂,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_裂眼,0)) AS 精修缺陷_刷洗缺陷_裂眼,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_糙活,0)) AS 精修缺陷_刷洗缺陷_糙活,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_断浆迹,0)) AS 精修缺陷_刷洗缺陷_断浆迹,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_裂,0)) AS 精修缺陷_刷洗缺陷_裂,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_活糙,0)) AS 精修缺陷_刷洗缺陷_活糙,
+								nvl(f.精修缺陷_刷洗缺陷_缺陷汇总,0) AS 精修缺陷_刷洗缺陷_缺陷汇总,
+								DECODE( NVL( f.精修缺陷_刷洗缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.精修缺陷_刷洗缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL(打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 精修缺陷_刷洗缺陷_缺陷率,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_滚釉,0)) AS 施釉擦坯缺陷_施釉缺陷_滚釉,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_釉薄,0)) AS 施釉擦坯缺陷_施釉缺陷_釉薄,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_釉不匀,0)) AS 施釉擦坯缺陷_施釉缺陷_釉不匀,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_釉磕,0)) AS 施釉擦坯缺陷_施釉缺陷_釉磕,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_釉脏,0)) AS 施釉擦坯缺陷_施釉缺陷_釉脏,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_釉沾,0)) AS 施釉擦坯缺陷_施釉缺陷_釉沾,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_釉绺,0)) AS 施釉擦坯缺陷_施釉缺陷_釉绺,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_针孔,0)) AS 施釉擦坯缺陷_施釉缺陷_针孔,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_色脏,0)) AS 施釉擦坯缺陷_施釉缺陷_色脏,
+
+								nvl(f.施釉擦坯缺陷_施釉缺陷_缺陷汇总,0) AS 施釉擦坯缺陷_施釉缺陷_缺陷汇总,
+								DECODE( NVL( f.施釉擦坯缺陷_施釉缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.施釉擦坯缺陷_施釉缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 施釉擦坯缺陷_施釉缺陷_缺陷率,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_灌釉不良,0)) AS 施釉擦坯缺陷_擦坯缺陷_灌釉不良,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_擦脏,0)) AS 施釉擦坯缺陷_擦坯缺陷_擦脏,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_崩标,0)) AS 施釉擦坯缺陷_擦坯缺陷_崩标,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_倒标,0)) AS 施釉擦坯缺陷_擦坯缺陷_倒标,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_标污,0)) AS 施釉擦坯缺陷_擦坯缺陷_标污,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_错标,0)) AS 施釉擦坯缺陷_擦坯缺陷_错标,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_丢标,0)) AS 施釉擦坯缺陷_擦坯缺陷_丢标,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_标错位,0)) AS 施釉擦坯缺陷_擦坯缺陷_标错位,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_未灌釉,0)) AS 施釉擦坯缺陷_擦坯缺陷_未灌釉,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_灌磕,0)) AS 施釉擦坯缺陷_擦坯缺陷_灌磕,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_坯磕,0)) AS 施釉擦坯缺陷_擦坯缺陷_坯磕,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_碱石,0)) AS 施釉擦坯缺陷_擦坯缺陷_碱石,
+
+								nvl(f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总,0) AS 施釉擦坯缺陷_擦坯缺陷_缺陷汇总,
+								DECODE( NVL( f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 施釉擦坯缺陷_擦坯缺陷_缺陷率,
+								to_char(nvl(s.烧成缺陷_装窑缺陷_落脏,0)) AS 烧成缺陷_装窑缺陷_落脏,
+								to_char(nvl(s.烧成缺陷_装窑缺陷_装沾,0)) AS 烧成缺陷_装窑缺陷_装沾,
+								to_char(nvl(s.烧成缺陷_装窑缺陷_装磕,0)) AS 烧成缺陷_装窑缺陷_装磕,
+								to_char(nvl(s.烧成缺陷_装窑缺陷_装裂,0)) AS 烧成缺陷_装窑缺陷_装裂,
+								to_char(nvl(s.烧成缺陷_装窑缺陷_装走,0)) AS 烧成缺陷_装窑缺陷_装走,
+								to_char(nvl(s.烧成缺陷_装窑缺陷_装脏,0)) AS 烧成缺陷_装窑缺陷_装脏,
+								to_char(nvl(s.烧成缺陷_装窑缺陷_缺釉,0)) AS 烧成缺陷_装窑缺陷_缺釉,
+								to_char(nvl(s.烧成缺陷_装窑缺陷_板折,0)) AS 烧成缺陷_装窑缺陷_板折,
+
+								nvl(f.烧成缺陷_装窑缺陷_缺陷汇总,0) AS 烧成缺陷_装窑缺陷_缺陷汇总,
+								DECODE( NVL( f.烧成缺陷_装窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.烧成缺陷_装窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 烧成缺陷_装窑缺陷_缺陷率,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_水滴,0)) AS 烧成缺陷_烧窑缺陷_水滴,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_窑脏,0)) AS 烧成缺陷_烧窑缺陷_窑脏,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_烧裂,0)) AS 烧成缺陷_烧窑缺陷_烧裂,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_针孔,0)) AS 烧成缺陷_烧窑缺陷_针孔,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_风惊,0)) AS 烧成缺陷_烧窑缺陷_风惊,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_烧生,0)) AS 烧成缺陷_烧窑缺陷_烧生,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_串烟,0)) AS 烧成缺陷_烧窑缺陷_串烟,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_烧坑,0)) AS 烧成缺陷_烧窑缺陷_烧坑,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_桔釉,0)) AS 烧成缺陷_烧窑缺陷_桔釉,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_过火,0)) AS 烧成缺陷_烧窑缺陷_过火,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_火燎,0)) AS 烧成缺陷_烧窑缺陷_火燎,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_烧走,0)) AS 烧成缺陷_烧窑缺陷_烧走,
+								nvl(f.烧成缺陷_烧窑缺陷_缺陷汇总,0)AS 烧成缺陷_烧窑缺陷_缺陷汇总,
+								DECODE( NVL( f.烧成缺陷_烧窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.烧成缺陷_烧窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 烧成缺陷_烧窑缺陷_缺陷率,
+								TO_CHAR(nvl(s.烧成缺陷_出窑缺陷_磕碰,0))AS 烧成缺陷_出窑缺陷_磕碰,
+								TO_CHAR(nvl(s.烧成缺陷_出窑缺陷_划釉,0))AS 烧成缺陷_出窑缺陷_划釉,
+								nvl(f.烧成缺陷_出窑缺陷_缺陷汇总,0) AS 烧成缺陷_出窑缺陷_缺陷汇总,
+								DECODE( NVL( f.烧成缺陷_出窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.烧成缺陷_出窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 烧成缺陷_出窑缺陷_缺陷率,
+								TO_CHAR(nvl(s.原料缺陷_泥料缺陷_铜脏,0)) AS 原料缺陷_泥料缺陷_铜脏,
+								TO_CHAR(nvl(s.原料缺陷_泥料缺陷_料脏,0)) AS 原料缺陷_泥料缺陷_料脏,
+								TO_CHAR(nvl(s.原料缺陷_釉料缺陷_铜脏,0)) AS 原料缺陷_釉料缺陷_铜脏, 
+								TO_CHAR(nvl(s.原料缺陷_釉料缺陷_铁脏,0)) AS 原料缺陷_釉料缺陷_铁脏,
+								nvl(f.原料缺陷_缺陷汇总,0) AS 原料缺陷__缺陷汇总,
+								DECODE( NVL( f.原料缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.原料缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 原料缺陷__缺陷率,
+								
+								to_char(nvl(s.其他_隧道窑其他试验不良,0)) AS 其他_隧道窑其他_试验不良,
+								nvl(f.其他_缺陷汇总,0) AS 其他_隧道窑其他_缺陷汇总,
+								DECODE( NVL( f.其他_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.其他_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 其他_隧道窑其他_缺陷率
+								FROM 检验数
+									LEFT JOIN 产品 ON 检验数.GOODSCODE=产品.GOODSCODE
+									LEFT JOIN  产品明细缺陷  s ON (检验数.GOODSCODE=s.GOODSCODE and (检验数.GOODSTYPENAME=s.GOODSTYPENAME or (检验数.GOODSTYPENAME is null and s.GOODSTYPENAME is null)) and s.gid>0) or(检验数.GOODSCODE=s.GOODSCODE and s.gid=0)
+									LEFT JOIN 产品汇总缺陷 f ON f.GOODSCODE=产品.GOODSCODE 
+									LEFT JOIN  打磨擦洗出窑数  ON 1=1
+											UNION ALL
+									SELECT
+								to_Char(检验数.GOODSCODE),
+								to_Char(检验数.GOODSNAME),
+								to_Char(产品.GOODSSPECIFICATION),
+								to_Char(产品.GOODSTYPENAME),
+								to_Char(产品.LUSTERWAREWEIGHT),
+								to_Char(检验数.检验量),to_Char(检验数.出窑重量),
+								to_Char(检验数.合格量),
+								to_Char(检验数.合格品重量),
+								to_Char(检验数.残品),
+								to_Char(检验数.残品重量),
+								DECODE( NVL( 检验数.合格量, 0 ), 0, '0%', TO_CHAR( ( NVL( 检验数.合格量, 0 ) / DECODE( NVL(检验数.检验量, 1 ), 0, 1, NVL( 检验数.检验量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 合格率,
+								DECODE( NVL( s.成型半检缺陷_坯脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_坯脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_棕眼, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_棕眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_裂底, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_裂底, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_裂圈, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_裂圈, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_裂鼻子, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_裂鼻子, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_裂水道, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_裂水道, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_裂管, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_裂管, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_沾接裂, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_沾接裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_裂眼, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_裂眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_糙活, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_糙活, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_变形, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_变形, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_渣, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_渣, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_管道渣, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_管道渣, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_孔眼不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_孔眼不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_堵眼, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_堵眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_眼歪, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_眼歪, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_丢气孔, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_丢气孔, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_丢眼, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_丢眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_漏气, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_漏气, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_空泡, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_空泡, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_水封不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_水封不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_漏水, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_漏水, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_卡球, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_卡球, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_冲刷不好, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_冲刷不好, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_泥埂, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_泥埂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_断浆迹, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_断浆迹, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_模迹, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_模迹, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_重皮, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_重皮, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_气泡, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_气泡, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_眼扁, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_眼扁, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_水绺, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_水绺, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_裂, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_活糙, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_活糙, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_贴码不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_贴码不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_干补不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_干补不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_内漏不合格, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_内漏不合格, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_外漏不合格, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_外漏不合格, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_试水不合格, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_试水不合格, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_隧道窑其他蹦脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_隧道窑其他蹦脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.成型半检缺陷__缺陷汇总,
+								DECODE( NVL( f.成型半检缺陷__缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.成型半检缺陷__缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 成型半检缺陷__缺陷率,
+DECODE( NVL( s.精修缺陷_打磨缺陷_糙活, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_糙活, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_变形, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_变形, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_渣, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_渣, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_管道渣, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_管道渣, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_孔眼不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_孔眼不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_睹眼, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_睹眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_眼歪, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_眼歪, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_丢气孔, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_丢气孔, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_丢眼, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_丢眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_水封不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_水封不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_卡球, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_卡球, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_活糙, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_活糙, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.精修缺陷_打磨缺陷_缺陷汇总,
+								DECODE( NVL( f.精修缺陷_打磨缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.精修缺陷_打磨缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 精修缺陷_打磨缺陷_缺陷率,
+DECODE( NVL( s.精修缺陷_刷洗缺陷_坯脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_坯脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_棕眼, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_棕眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_裂底, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_裂底, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_裂圈, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_裂圈, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_裂鼻子, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_裂鼻子, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_裂水道, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_裂水道, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_裂管, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_裂管, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_沾接裂, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_沾接裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_裂眼, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_裂眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_糙活, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_糙活, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_断浆迹, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_断浆迹, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_裂, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_活糙, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_活糙, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.精修缺陷_刷洗缺陷_缺陷汇总,
+								DECODE( NVL( f.精修缺陷_刷洗缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.精修缺陷_刷洗缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 精修缺陷_刷洗缺陷_缺陷率,
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_滚釉, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_滚釉, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_釉薄, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_釉薄, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_釉不匀, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_釉不匀, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_釉磕, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_釉磕, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_釉脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_釉脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_釉沾, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_釉沾, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_釉绺, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_釉绺, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_针孔, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_针孔, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_色脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_色脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+	f.施釉擦坯缺陷_施釉缺陷_缺陷汇总,
+								DECODE( NVL( f.施釉擦坯缺陷_施釉缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.施釉擦坯缺陷_施釉缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 施釉擦坯缺陷_施釉缺陷_缺陷率,
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_灌釉不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_灌釉不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_擦脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_擦脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_崩标, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_崩标, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_倒标, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_倒标, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_标污, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_标污, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_错标, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_错标, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_丢标, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_丢标, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_标错位, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_标错位, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_未灌釉, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_未灌釉, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_灌磕, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_灌磕, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_坯磕, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_坯磕, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_碱石, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_碱石, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+	f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总,
+								DECODE( NVL( f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 施釉擦坯缺陷_擦坯缺陷_缺陷率,
+DECODE( NVL( s.烧成缺陷_装窑缺陷_落脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_装窑缺陷_落脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_装窑缺陷_装沾, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_装窑缺陷_装沾, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_装窑缺陷_装磕, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_装窑缺陷_装磕, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_装窑缺陷_装裂, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_装窑缺陷_装裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_装窑缺陷_装走, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_装窑缺陷_装走, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_装窑缺陷_装脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_装窑缺陷_装脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_装窑缺陷_缺釉, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_装窑缺陷_缺釉, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_装窑缺陷_板折, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_装窑缺陷_板折, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.烧成缺陷_装窑缺陷_缺陷汇总,
+								DECODE( NVL( f.烧成缺陷_装窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.烧成缺陷_装窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 烧成缺陷_装窑缺陷_缺陷率,
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_水滴, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_水滴, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_窑脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_窑脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_烧裂, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_烧裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_针孔, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_针孔, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_风惊, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_风惊, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_烧生, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_烧生, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_串烟, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_串烟, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_烧坑, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_烧坑, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_桔釉, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_桔釉, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_过火, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_过火, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_火燎, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_火燎, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_烧走, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_烧走, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.烧成缺陷_烧窑缺陷_缺陷汇总,
+								DECODE( NVL( f.烧成缺陷_烧窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.烧成缺陷_烧窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 烧成缺陷_烧窑缺陷_缺陷率,
+DECODE( NVL( s.烧成缺陷_出窑缺陷_磕碰, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_出窑缺陷_磕碰, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_出窑缺陷_划釉, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_出窑缺陷_划釉, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.烧成缺陷_出窑缺陷_缺陷汇总,
+								DECODE( NVL( f.烧成缺陷_出窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.烧成缺陷_出窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 烧成缺陷_出窑缺陷_缺陷率,
+DECODE( NVL( s.原料缺陷_泥料缺陷_铜脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.原料缺陷_泥料缺陷_铜脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.原料缺陷_泥料缺陷_料脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.原料缺陷_泥料缺陷_料脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.原料缺陷_釉料缺陷_铜脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.原料缺陷_釉料缺陷_铜脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.原料缺陷_釉料缺陷_铁脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.原料缺陷_釉料缺陷_铁脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.原料缺陷_缺陷汇总 AS 原料缺陷__缺陷汇总,
+								DECODE( NVL( f.原料缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.原料缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 原料缺陷__缺陷率,
+
+DECODE( NVL( s.其他_隧道窑其他试验不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.其他_隧道窑其他试验不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+	f.其他_缺陷汇总 AS 其他_缺陷汇总,
+								DECODE( NVL( f.其他_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.其他_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 其他_缺陷率
+							FROM 检验数
+									LEFT JOIN 产品 ON 检验数.GOODSCODE=产品.GOODSCODE
+									LEFT JOIN  产品明细缺陷  s ON 产品.GOODSCODE=s.GOODSCODE
+									LEFT JOIN 产品汇总缺陷 f ON f.GOODSCODE=产品.GOODSCODE 
+									LEFT JOIN  打磨擦洗出窑数  ON 1=1
+								WHERE 检验数.GOODSCODE='总计'
+		UNION ALL		SELECT
+								'工序出窑量' AS  产品编码,
+								'' 产品名称,
+								'' 产品规格,
+								''产品类别,
+								'' 重量,
+								'' 检验量,'',
+								'' 合格量,'',
+								'' 残品,'',
+								'' 合格率,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__坯脏,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__棕眼,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂底,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂圈,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂鼻子,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂水道,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂管,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__沾接裂,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂眼,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__糙活,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__变形,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__渣,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__管道渣,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__孔眼不良,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__堵眼,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__眼歪,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__丢气孔,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__丢眼,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__漏气,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__空泡,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__水封不良,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__漏水,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__卡球,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__冲刷不好,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__泥埂,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__断浆迹,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__模迹,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__重皮,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__气泡,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__眼扁,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__水绺,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__裂,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__活糙,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__贴码不良,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__干补不良,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__内漏不合格,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__外漏不合格,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__试水不合格,
+								to_char(检验数.检验量)		 AS 成型半检缺陷_蹦脏,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__缺陷汇总,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__缺陷率,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_糙活,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_变形,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_渣,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_管道渣,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_孔眼不良,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_睹眼,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_眼歪,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_丢气孔,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_丢眼,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_水封不良,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_卡球,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_活糙,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_缺陷汇总,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_缺陷率,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_坯脏,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_棕眼,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂底,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂圈,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂鼻子,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂水道,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂管,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_沾接裂,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂眼,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_糙活,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_断浆迹,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_活糙,
+
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_缺陷汇总,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_缺陷率,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_滚釉,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉薄,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉不匀,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉磕,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉脏,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉沾,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉绺,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_针孔,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_色脏,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_缺陷汇总,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_缺陷率,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_灌釉不良,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_擦脏,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_崩标,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_倒标,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_标污,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_错标,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_丢标,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_标错位,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_未灌釉,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_灌磕,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_坯磕,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_碱石,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_缺陷汇总,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_缺陷率,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_落脏,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_装沾,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_装磕,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_装裂,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_装走,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_装脏,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_缺釉,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_板折,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_缺陷汇总,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_缺陷率,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_水滴,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_窑脏,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_烧裂,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_针孔,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_风惊,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_烧生,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_串烟,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_烧坑,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_桔釉,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_过火,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_火燎,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_烧走,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_缺陷汇总,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_缺陷率,
+								to_char(检验数.检验量)		 AS 烧成缺陷_出窑缺陷_磕碰,
+								to_char(检验数.检验量)		 AS 烧成缺陷_出窑缺陷_划釉,
+								to_char(检验数.检验量)		 AS 烧成缺陷_出窑缺陷_缺陷汇总,
+								to_char(检验数.检验量)		 AS 烧成缺陷_出窑缺陷_缺陷率,
+								to_char(检验数.检验量)		 AS 原料缺陷_泥料缺陷_铜脏,
+								to_char(检验数.检验量)		 AS 原料缺陷_泥料缺陷_料脏,
+								to_char(检验数.检验量)		 AS 原料缺陷_釉料缺陷_铜脏, 
+								to_char(检验数.检验量)		 AS 原料缺陷_釉料缺陷_铁脏,
+								to_char(检验数.检验量)		 AS 原料缺陷__缺陷汇总,
+								to_char(检验数.检验量)		 AS 原料缺陷__缺陷率,
+								
+								to_char(检验数.检验量)		 AS 其他_隧道窑其他_试验不良,
+								to_char(检验数.检验量)		 AS 其他__缺陷汇总,
+								to_char(检验数.检验量)		 AS 其他__缺陷率
+								FROM 检验数 
+									LEFT JOIN  打磨擦洗出窑数  ON 1=1
+									WHERE 检验数.GOODSCODE='总计'
+
+)
+ORDER BY 产品类别,产品编码
+							";
+                }else if (context.Request["procedureMaster"] == "1") {
+                    kilproc = "28";//出窑工序
+                    FunctionalTesting = "61";//功能检测
+                    notInproc = "(16,60)";//排除工序
+                    sqlStr = @"WITH 
+							产品汇总缺陷 AS ( 
+												SELECT 	
+														 CASE WHEN  GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =5   THEN '小计'
+											WHEN  GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =6  AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001001' THEN '大件合计'
+											WHEN  GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =6  AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001002' THEN '小件合计'
+											WHEN  GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =7   THEN '总计'
+														ELSE to_char(good.GOODSCODE) END AS GOODSCODE,
+									GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME) AS GID,
+									good.GOODSSPECIFICATION,
+									good.GOODSNAME,
+										CASE WHEN GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6))=6 AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001001' THEN '大件' 
+										 WHEN GROUPING_ID(good.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6))=6 AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001002' THEN '小件'
+										 ELSE TO_CHAR(gtp.GOODSTYPENAME )END GOODSTYPENAME,
+									SUBSTR(gtp.GOODSTYPECODE, 0, 6)  AS GOODSTYPECODE,
+									TO_CHAR(COUNT( DISTINCT CASE WHEN   df.DEFECTCODE IN ('01','02','03','04','05','06','07','08','09','10','12','13','14','15','16','17','18','19','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','001','002','099','99','1' ,'2' ,'3' )    THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 成型半检缺陷__缺陷汇总,
+									
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '10', '12', '13', '14', '15', '16', '17', '18', '19', '23', '25', '35' )  THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 精修缺陷_打磨缺陷_缺陷汇总,
+									
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN PDs.PROCEDUREID IN (5,36,52)    AND df.DEFECTCODE IN ( '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '28', '34', '35') THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 精修缺陷_刷洗缺陷_缺陷汇总,
+									
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN df.DEFECTCODE IN ( '36','37','38','39','40','41','42','43','44') THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 施釉擦坯缺陷_施釉缺陷_缺陷汇总,
+																
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN df.DEFECTCODE IN ( '47','48','49','50','51','52','53','54','55','56','20','57')AND MDF.DEFECTCODE IS NOT NULL AND DF.BARCODE IS NOT NULL  THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END ))AS 施釉擦坯缺陷_擦坯缺陷_缺陷汇总,
+																
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN df.DEFECTCODE IN ( '61','62','63','64','65','66','67', '11') THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 烧成缺陷_装窑缺陷_缺陷汇总,
+									
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN df.DEFECTCODE IN ( '69','70','71','43','73','74','75','76','77','78','79','80') THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END ))AS 烧成缺陷_烧窑缺陷_缺陷汇总,
+									
+									TO_CHAR(COUNT( DISTINCT  CASE WHEN df.DEFECTCODE IN ( '83','84')  THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 烧成缺陷_出窑缺陷_缺陷汇总,
+
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '86', '87','086', '88'  ) THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 原料缺陷_缺陷汇总,
+
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '91', '92', '93', '083', '084') THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 冷修_缺陷汇总,
+					
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '091', '092', '093', '96') THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 回烧修补_缺陷汇总,
+									
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '061', '062', '063', '064', '065', '066', '067', '011' ) THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 回烧装窑_缺陷汇总,
+								
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '069', '070', '071', '43', '073', '074', '075', '076', '077', '078', '079', '080' ) THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 回烧烧窑_缺陷汇总,
+								
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '0083', '0084' ) THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 回烧出窑_缺陷汇总,
+									
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '98'  ) THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 研磨_缺陷汇总,									
+									
+									TO_CHAR(COUNT( DISTINCT CASE WHEN df.DEFECTCODE IN ( '99', '100') THEN to_char(pd.productiondataid || df.barcode || df.DEFECTCODE ) ELSE NULL END )) AS 其他_缺陷汇总
+
+							FROM
+								TP_PM_DEFECT df
+								 
+						LEFT JOIN (SELECT   pd1.goodsname
+													 ,pd1.groutingdailydetailid
+													 ,pd1.goodsid
+													 ,pd1.goodscode 
+													 ,pd1.groutinguserid
+													 ,pd1.groutingusercode
+													 ,pd1.createtime
+													 ,pd1.procedureid
+													 ,pd1.kilncarbatchno
+													 ,pd1.barcode
+													 ,pd1.valueflag 
+													 ,nvl(pd61.productiondataid, pd1.productiondataid) productiondataid
+													  ,pd1.productiondataid  fproductiondataid
+										FROM (SELECT *
+												FROM (SELECT pd28.goodsname
+															,pd28.groutingdailydetailid
+															,pd28.goodsid
+															,pd28.goodscode
+															,pd28.goodsleveltypeid
+															,pd28.groutinguserid
+															,pd28.groutingusercode
+															,pd28.createtime
+															,pd24.procedureid
+															,pd28.kilncarbatchno
+															,pd28.barcode
+															,pd28.productiondataid
+															,pd28.valueflag
+															,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+														FROM tp_pm_productiondata pd28 -- 重烧质量登记
+													   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
+														  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+													   WHERE pd28.procedureid = 28
+														 AND pd28.valueflag = 1
+														 AND pd24.valueflag = 1
+														 AND pd24.procedureid IN (24, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+														 AND pd28.CREATETIME >= @DATEBEGIN@
+														 AND pd28.CREATETIME <=   @DATEEND@ 
+														 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )
+														 AND pd24.productiondataid < pd28.productiondataid) t
+											   WHERE rownums = 1
+												 AND t.procedureid = 42) pd1
+										LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
+										  ON pd61.procedureid = 61
+										 AND pd61.valueflag = 1
+										 AND pd61.groutingdailydetailid = pd1.groutingdailydetailid
+										 AND pd61.kilncarbatchno = pd1.kilncarbatchno
+										 AND pd61.productiondataid > pd1.productiondataid
+											-- 取最近的数据
+										 AND NOT EXISTS (SELECT 1
+												FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
+											   WHERE pd28c.procedureid = 28
+												 AND pd28c.valueflag = 1
+												 AND pd28c.groutingdailydetailid = pd1.groutingdailydetailid
+												 AND pd28c.kilncarbatchno = pd1.kilncarbatchno
+												 AND pd28c.productiondataid > pd1.productiondataid
+												 AND pd28c.productiondataid < pd61.productiondataid)) pd
+							  ON df.productiondataid in (pd.productiondataid ,pd.fproductiondataid)
+									LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
+									LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
+									LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID 
+									INNER JOIN tp_pm_productiondata pds ON pds.barcode = pd.barcode  AND pds.valueflag = 1
+											WHERE df.VALUEFLAG=1 
+												AND PD.CREATETIME >= @DATEBEGIN@
+												AND PD.CREATETIME <=  @DATEEND@  AND DF.PROCEDUREID NOT IN " + notInproc;
+                    sqlStr += @"GROUP BY
+												Grouping sets ( ( good.GOODSCODE, good.GOODSNAME,good.GOODSSPECIFICATION,gtp.GOODSTYPENAME ), ( gtp.GOODSTYPENAME) ,(SUBSTR(gtp.GOODSTYPECODE, 0, 6)),()) 
+											),
+											产品明细缺陷 AS (
+											SELECT			GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)),
+								 CASE WHEN  GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =5   THEN '小计'
+											WHEN  GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =6   AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001001' THEN '大件合计'
+											WHEN  GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =6   AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001002' THEN '小件合计'
+											WHEN  GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6)) =7   THEN '总计'
+														ELSE to_char(GD.GOODSCODE) END AS GOODSCODE,
+									GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME) AS GID,
+								gd.GOODSNAME,
+								CASE WHEN GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6))=6 AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001001' THEN '大件' 
+										 WHEN GROUPING_ID(GD.GOODSCODE,gtp.GOODSTYPENAME,SUBSTR(gtp.GOODSTYPECODE, 0, 6))=6 AND SUBSTR(gtp.GOODSTYPECODE, 0, 6)='001002' THEN '小件'
+										 ELSE TO_CHAR(gtp.GOODSTYPENAME )END GOODSTYPENAME,
+								SUBSTR(gtp.GOODSTYPECODE, 0, 6)  AS GOODSTYPECODE,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '01' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_坯脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '02' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_棕眼,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '03' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂底,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '04' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂圈,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '05' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂鼻子,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '06' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂水道,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '07' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂管,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '08' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_沾接裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '09' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂眼,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '10' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_糙活,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '12' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_变形,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '13' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_渣,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '14' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_管道渣,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '15' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_孔眼不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '16' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_堵眼,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '17' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_眼歪,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '18' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_丢气孔,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '19' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_丢眼,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '21' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_漏气,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '22' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_空泡,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '23' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_水封不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '24' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_漏水,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '25' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_卡球,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '26' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_冲刷不好,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '27' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_泥埂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '28' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_断浆迹,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '29' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_模迹,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '30' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_重皮,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '31' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_气泡,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '32' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_眼扁,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '33' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_水绺,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '34' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '35' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_活糙,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '001' ) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_贴码不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '002' ) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_干补不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '1' )   THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_内漏不合格,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '2' )   THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_外漏不合格,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '3' )   THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_试水不合格,
+
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '10' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_糙活,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '12' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_变形,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '13' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_渣,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '14' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_管道渣,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '15' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_孔眼不良,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '16' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_睹眼,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '17' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_眼歪,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '18' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_丢气孔,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '19' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_丢眼,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '23' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_水封不良,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '25' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_卡球,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (4,36,53) AND df.DEFECTCODE IN ( '35' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_打磨缺陷_活糙,
+
+
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '01' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_坯脏,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '02' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_棕眼,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '03' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂底,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '04' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂圈,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '05' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂鼻子,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '06' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂水道,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '07' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂管,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '08' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_沾接裂,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '09' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂眼,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '10' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_糙活,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '28' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_断浆迹,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '34' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_裂,
+count( DISTINCT CASE WHEN PDs.PROCEDUREID IN (5,36,52) AND df.DEFECTCODE IN ( '35' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 精修缺陷_刷洗缺陷_活糙,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '36' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_滚釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '37' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉薄,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '38' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉不匀,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '39' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉磕,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '40' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '41' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉沾,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '42' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_釉绺,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '43' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_针孔,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '44' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_施釉缺陷_色脏,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '47' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_灌釉不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '48' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_擦脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '49' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_崩标,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '50' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_倒标,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '51' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_标污,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '52' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_错标,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '53' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_丢标,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '54' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_标错位,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '55' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_未灌釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '56' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_灌磕,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '20' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_坯磕,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '57' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 施釉擦坯缺陷_擦坯缺陷_碱石,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '61' ) AND PD.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_落脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '62' ) AND PD.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_装沾,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '63' ) AND PD.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_装磕,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '64' ) AND PD.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_装裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '65' ) AND PD.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_装走,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '66' ) AND PD.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_装脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '67' ) AND PD.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_缺釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '11' ) AND PD.PROCEDUREID IN (55,13,25) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_装窑缺陷_板折,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '69' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_水滴,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '70' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_窑脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '71' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_烧裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '43' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_针孔,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '73' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_风惊,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '74' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_烧生,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '75' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_串烟,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '76' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_烧坑,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '77' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_桔釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '78' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_过火,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '79' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_火燎,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '80' ) AND PD.PROCEDUREID IN (30,39,57)  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_烧窑缺陷_烧走,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '83' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_出窑缺陷_磕碰,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '84' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 烧成缺陷_出窑缺陷_划釉,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '86' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 原料缺陷_泥料缺陷_铜脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '87' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 原料缺陷_泥料缺陷_料脏,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '086' ) THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 原料缺陷_釉料缺陷_铜脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '88' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 原料缺陷_釉料缺陷_铁脏,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '91' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 冷修缺陷_修补不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '92' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 冷修缺陷_漏修,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '93' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 冷修缺陷_漏检,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '083' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 冷修缺陷_磕碰,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '084' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 冷修缺陷_划釉,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '091' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧修补缺陷_修补不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '092' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧修补缺陷_漏修,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '093' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧修补缺陷_漏检,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '96' )   THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧修补缺陷_白点,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '061' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_落脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '062' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_装沾,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '063' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_装磕,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '064' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_装裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '065' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_装走,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '066' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_装脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '067' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_缺釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '011' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_装窑缺陷_板折,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '069' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_水滴,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '070' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_窑脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '071' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_烧裂,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '43' )   THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_针孔,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '073' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_风惊,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '074' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_烧生,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '075' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_串烟,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '076' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_烧坑,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '077' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_桔釉,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '078' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_过火,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '079' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_火燎,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '080' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_烧窑缺陷_烧走,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '0083')  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_出窑缺陷_磕碰,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '0084')  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 回烧缺陷_出窑缺陷_划釉,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '98' )   THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 研磨缺陷_研磨不良,
+
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '99' )   THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_隧道窑其他蹦脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '100' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 其他_隧道窑其他试验不良,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '099' )  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 成型半检缺陷_梭式窑其他蹦脏,
+count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '0100')  THEN (pd.productiondataid || df.barcode ||  df.DEFECTCODE) ELSE NULL END ) AS 其他_梭式窑其他试验不良
+							FROM
+								TP_PM_DEFECT df
+									LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gd ON  df.BARCODE = gd.BARCODE 
+									 
+					LEFT JOIN (SELECT   pd1.goodsname
+												 ,pd1.groutingdailydetailid
+												 ,pd1.goodsid
+												 ,pd1.goodscode 
+												 ,pd1.groutinguserid
+												 ,pd1.groutingusercode
+												 ,pd1.createtime
+												 ,pd1.procedureid
+												 ,pd1.kilncarbatchno
+												 ,pd1.barcode
+												 ,pd1.valueflag 
+												 ,nvl(pd61.productiondataid, pd1.productiondataid) productiondataid
+												 ,pd1.productiondataid  fproductiondataid
+									FROM (SELECT *
+											FROM (SELECT pd28.goodsname
+														,pd28.groutingdailydetailid
+														,pd28.goodsid
+														,pd28.goodscode
+														,pd28.goodsleveltypeid
+														,pd28.groutinguserid
+														,pd28.groutingusercode
+														,pd28.createtime
+														,pd24.procedureid
+														,pd28.kilncarbatchno
+														,pd28.barcode
+														,pd28.productiondataid
+														,pd28.valueflag
+														,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+													FROM tp_pm_productiondata pd28 -- 重烧质量登记
+												   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
+													  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+												   WHERE pd28.procedureid = 28
+													 AND pd28.valueflag = 1
+													 AND pd24.valueflag = 1
+													 AND pd24.procedureid IN (24, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+													 AND pd28.CREATETIME >= @DATEBEGIN@
+													 AND pd28.CREATETIME <=   @DATEEND@ 
+													 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )
+													 AND pd24.productiondataid < pd28.productiondataid) t
+										   WHERE rownums = 1
+											 AND t.procedureid = 42) pd1
+									LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
+									  ON pd61.procedureid = 61
+									 AND pd61.valueflag = 1
+									 AND pd61.groutingdailydetailid = pd1.groutingdailydetailid
+									 AND pd61.kilncarbatchno = pd1.kilncarbatchno
+									 AND pd61.productiondataid > pd1.productiondataid
+										-- 取最近的数据
+									 AND NOT EXISTS (SELECT 1
+											FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
+										   WHERE pd28c.procedureid = 28
+											 AND pd28c.valueflag = 1
+											 AND pd28c.groutingdailydetailid = pd1.groutingdailydetailid
+											 AND pd28c.kilncarbatchno = pd1.kilncarbatchno
+											 AND pd28c.productiondataid > pd1.productiondataid
+											 AND pd28c.productiondataid < pd61.productiondataid)) pd
+						  ON df.productiondataid in (pd.productiondataid ,pd.fproductiondataid)
+									LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
+									LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
+									LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID  
+									INNER JOIN tp_pm_productiondata pds ON pds.barcode = pd.barcode  AND pds.valueflag = 1
+							WHERE
+												df.VALUEFLAG=1  
+												AND PD.CREATETIME >= @DATEBEGIN@
+												AND PD.CREATETIME <=  @DATEEND@   AND DF.PROCEDUREID NOT IN " + notInproc;
+                    sqlStr += @"	GROUP BY
+												Grouping sets ( ( gd.GOODSCODE, gd.GOODSNAME,gtp.GOODSTYPENAME ), ( gtp.GOODSTYPENAME) , ( gtp.GOODSTYPENAME) ,(SUBSTR(gtp.GOODSTYPECODE, 0, 6)),()    ) 
+								),
+								检验数 AS (	SELECT
+GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX),
+ CASE WHEN  GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX) =5   THEN '小计'
+			WHEN  GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX) =6   THEN '合计'
+			WHEN  GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX) =7   THEN '总计'
+													 ELSE to_char(GOODSCODE) END AS GOODSCODE,
+CASE WHEN GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX)=6 AND GOODSTYPECODESIX='001001' THEN '大件' 
+		 WHEN GROUPING_ID(GOODSCODE,GOODSTYPENAME,GOODSTYPECODESIX)=6 AND GOODSTYPECODESIX='001002' THEN '小件'
+										   ELSE TO_CHAR(GOODSTYPENAME )END GOODSTYPENAME,GOODSNAME,
+											  SUM(检验量)检验量,SUM(合格量) 合格量,SUM(残品) 残品,
+											 SUM(检验量*LUSTERWAREWEIGHT) 出窑重量,
+											 SUM(合格量*LUSTERWAREWEIGHT) 合格品重量,
+											 SUM(残品*LUSTERWAREWEIGHT) 残品重量
+FROM(
+SELECT distinct
+									pd.GOODSCODE,
+									SUBSTR(pd.GOODSTYPECODE, 0, 6) GOODSTYPECODESIX,
+									pd.GOODSNAME,
+									PD.GOODSTYPENAME,
+									COUNT(   pd.BARCODE ) AS 检验量,
+									COUNT(  CASE WHEN PD.GOODSLEVELTYPEID IN ( 4, 5 ) THEN BARCODE ELSE null END ) AS 合格量,
+									COUNT(  CASE WHEN PD.GOODSLEVELTYPEID  NOT IN ( 4, 5 ) THEN BARCODE ELSE null  END ) 残品,
+									LUSTERWAREWEIGHT
+				FROM (SELECT barcode
+                        ,goodscode
+                        ,goodsleveltypeid
+                        ,goodsname
+                        ,groutinguserid
+                        ,groutingusercode
+                        ,goodstypename
+                        ,goodstypecode
+                        ,lusterwareweight
+                        ,createtime 
+                    FROM (SELECT DISTINCT pd.barcode
+                                         ,pd.goodscode
+                                         ,pd.goodsname
+                                         ,pd.groutinguserid
+                                         ,pd.groutingusercode
+                                         ,gtp.goodstypecode
+                                         ,nvl(pd61.goodsleveltypeid, pd.goodsleveltypeid) goodsleveltypeid
+                                         ,pd.createtime
+                                         ,gtp.goodstypename
+                                         ,good.lusterwareweight
+                            FROM (SELECT *
+                                    FROM (SELECT pd28.goodsname
+                                                ,pd28.groutingdailydetailid
+                                                ,pd28.goodsid
+                                                ,pd28.goodscode
+                                                ,pd28.goodsleveltypeid
+                                                ,pd28.groutinguserid
+                                                ,pd28.groutingusercode
+                                                ,pd28.createtime
+                                                ,pd24.procedureid
+                                                ,pd28.kilncarbatchno
+                                                ,pd28.barcode
+                                                ,pd28.productiondataid
+                                                ,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+                                            FROM tp_pm_productiondata pd28 -- 重烧质量登记
+                                           INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
+                                              ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+                                           WHERE pd28.procedureid = 28
+                                             AND pd28.valueflag = 1
+                                             AND pd24.valueflag = 1
+                                             AND pd24.procedureid IN (24, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+                                             AND   pd28.CREATETIME >= @DATEBEGIN@
+                                             AND pd28.CREATETIME <=   @DATEEND@ 
+                                             AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )                                                 
+                                             AND pd24.productiondataid < pd28.productiondataid) t
+                                   WHERE rownums = 1
+                                     AND t.procedureid = 42) pd
+                            LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
+                              ON pd61.procedureid = 61
+                             AND pd61.valueflag = 1
+                             AND pd61.groutingdailydetailid = pd.groutingdailydetailid
+                             AND pd61.kilncarbatchno = pd.kilncarbatchno
+                             AND pd61.productiondataid > pd.productiondataid
+                                -- 取最近的数据
+                             AND NOT EXISTS
+                           (SELECT 1
+                                    FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
+                                   WHERE pd28c.procedureid = 28
+                                     AND pd28c.valueflag = 1
+                                     AND pd28c.groutingdailydetailid = pd.groutingdailydetailid
+                                     AND pd28c.kilncarbatchno = pd.kilncarbatchno
+                                     AND pd28c.productiondataid > pd.productiondataid
+                                     AND pd28c.productiondataid < pd61.productiondataid)
+                          
+                            LEFT JOIN tp_mst_goods good
+                              ON good.goodsid = pd.goodsid
+                            LEFT JOIN tp_mst_goodstype gtp
+                              ON gtp.goodstypeid = good.goodstypeid                          
+                          )) pd
+	GROUP BY pd.GOODSCODE,SUBSTR(pd.GOODSTYPECODE, 0, 6),pd.GOODSNAME,PD.GOODSTYPENAME,LUSTERWAREWEIGHT
+				
+)
+		GROUP BY Grouping sets((GOODSCODE,GOODSNAME,GOODSTYPENAME,GOODSTYPECODESIX),(GOODSTYPENAME),(GOODSTYPECODESIX),())),
+								产品 AS (
+								SELECT TO_CHAR(GOODSCODE) AS GOODSCODE,GOODSNAME,GOODSSPECIFICATION,gtp.GOODSTYPENAME 
+											,TP_MST_GOODS.LUSTERWAREWEIGHT
+								FROM TP_MST_GOODS
+								LEFT JOIN TP_MST_GOODSTYPE gtp ON TP_MST_GOODS.GOODSTYPEID=gtp.GOODSTYPEID
+								 WHERE TP_MST_GOODS.VALUEFLAG=1
+								UNION ALL
+								SELECT '总计' AS GOODSCODE,null,NULL ,NULL,null  FROM dual
+	
+								),
+打磨擦洗出窑数 AS (
+								SELECT  COUNT(DISTINCT CASE WHEN pds.PROCEDUREID IN (4,36,53) THEN PD.productiondataid ELSE NULL END ) 打磨,
+										COUNT(DISTINCT CASE WHEN pds.PROCEDUREID IN (5,36,52) THEN PD.productiondataid ELSE NULL END ) 擦洗,
+										COUNT(DISTINCT CASE WHEN pds.PROCEDUREID =@kilproc@ THEN PD.productiondataid ELSE NULL END ) 质量登记
+								 FROM (SELECT *
+												FROM (SELECT pd28.goodsname
+															,pd28.groutingdailydetailid
+															,pd28.goodsid
+															,pd28.goodscode
+															,pd28.goodsleveltypeid
+															,pd28.groutinguserid
+															,pd28.groutingusercode
+															,pd28.createtime
+															,pd24.procedureid
+															,pd28.kilncarbatchno
+															,pd28.barcode
+															,pd28.productiondataid
+															,pd28.valueflag
+															,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+														FROM tp_pm_productiondata pd28 -- 重烧质量登记
+													   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
+														  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+													   WHERE pd28.procedureid = 28
+														 AND pd28.valueflag = 1
+														 AND pd24.valueflag = 1
+														 AND pd24.procedureid IN (24, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+														 AND pd28.CREATETIME >= @DATEBEGIN@
+														 AND pd28.CREATETIME <=   @DATEEND@ 
+														 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )
+														 AND pd24.productiondataid < pd28.productiondataid) t
+											   WHERE rownums = 1
+												 AND t.procedureid = 42) pd 
+								 INNER JOIN TP_PM_PRODUCTIONDATA pds ON pds.BARCODE=PD.BARCODE   AND pds.valueflag = 1
+								
+	
+								)
+						SELECT * FROM (
+									SELECT
+								to_CHAR(检验数.GOODSCODE) AS  产品编码,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.GOODSNAME) ELSE NULL END 产品名称,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(产品.GOODSSPECIFICATION) ELSE NULL END 产品规格,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.GOODSTYPENAME) ELSE NULL END 产品类别,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(产品.LUSTERWAREWEIGHT) ELSE NULL END 单重,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.检验量) ELSE NULL END 检验量,
+							    CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.出窑重量) ELSE NULL END 出窑重量,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.合格量) ELSE NULL END 合格量,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.合格品重量) ELSE NULL END 合格品重量,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.残品) ELSE NULL END 残品,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN to_CHAR(检验数.残品重量) ELSE NULL END 残品重量,
+								CASE WHEN 检验数.GOODSCODE <> '总计' THEN DECODE( NVL( 检验数.合格量, 0 ), 0, '0%', TO_CHAR( ( NVL( 检验数.合格量, 0 ) / DECODE( NVL( 检验数.检验量, 1 ), 0, 1, NVL( 检验数.检验量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) ELSE NULL END AS 合格率,
+								to_char(nvl(s.成型半检缺陷_坯脏,0)) AS 成型半检缺陷__坯脏,
+								to_char(nvl(s.成型半检缺陷_棕眼,0)) AS 成型半检缺陷__棕眼,
+								to_char(nvl(s.成型半检缺陷_裂底,0)) AS 成型半检缺陷__裂底,
+								to_char(nvl(s.成型半检缺陷_裂圈,0)) AS 成型半检缺陷__裂圈,
+								to_char(nvl(s.成型半检缺陷_裂鼻子,0)) AS 成型半检缺陷__裂鼻子,
+								to_char(nvl(s.成型半检缺陷_裂水道,0)) AS 成型半检缺陷__裂水道,
+								to_char(nvl(s.成型半检缺陷_裂管,0)) AS 成型半检缺陷__裂管,
+								to_char(nvl(s.成型半检缺陷_沾接裂,0)) AS 成型半检缺陷__沾接裂,
+								to_char(nvl(s.成型半检缺陷_裂眼,0)) AS 成型半检缺陷__裂眼,
+								to_char(nvl(s.成型半检缺陷_糙活,0)) AS 成型半检缺陷__糙活,
+								to_char(nvl(s.成型半检缺陷_变形,0)) AS 成型半检缺陷__变形,
+								to_char(nvl(s.成型半检缺陷_渣,0)) AS 成型半检缺陷__渣,
+								to_char(nvl(s.成型半检缺陷_管道渣,0)) AS 成型半检缺陷__管道渣,
+								to_char(nvl(s.成型半检缺陷_孔眼不良,0)) AS 成型半检缺陷__孔眼不良,
+								to_char(nvl(s.成型半检缺陷_堵眼,0)) AS 成型半检缺陷__堵眼,
+								to_char(nvl(s.成型半检缺陷_眼歪,0)) AS 成型半检缺陷__眼歪,
+								to_char(nvl(s.成型半检缺陷_丢气孔,0)) AS 成型半检缺陷__丢气孔,
+								to_char(nvl(s.成型半检缺陷_丢眼,0)) AS 成型半检缺陷__丢眼,
+								to_char(nvl(s.成型半检缺陷_漏气,0)) AS 成型半检缺陷__漏气,
+								to_char(nvl(s.成型半检缺陷_空泡,0)) AS 成型半检缺陷__空泡,
+								to_char(nvl(s.成型半检缺陷_水封不良,0)) AS 成型半检缺陷__水封不良,
+								to_char(nvl(s.成型半检缺陷_漏水,0)) AS 成型半检缺陷__漏水,
+								to_char(nvl(s.成型半检缺陷_卡球,0)) AS 成型半检缺陷__卡球,
+								to_char(nvl(s.成型半检缺陷_冲刷不好,0)) AS 成型半检缺陷__冲刷不好,
+								to_char(nvl(s.成型半检缺陷_泥埂,0)) AS 成型半检缺陷__泥埂,
+								to_char(nvl(s.成型半检缺陷_断浆迹,0)) AS 成型半检缺陷__断浆迹,
+								to_char(nvl(s.成型半检缺陷_模迹,0)) AS 成型半检缺陷__模迹,
+								to_char(nvl(s.成型半检缺陷_重皮,0)) AS 成型半检缺陷__重皮,
+								to_char(nvl(s.成型半检缺陷_气泡,0)) AS 成型半检缺陷__气泡,
+								to_char(nvl(s.成型半检缺陷_眼扁,0)) AS 成型半检缺陷__眼扁,
+								to_char(nvl(s.成型半检缺陷_水绺,0)) AS 成型半检缺陷__水绺,
+								to_char(nvl(s.成型半检缺陷_裂,0)) AS 成型半检缺陷__裂,
+								to_char(nvl(s.成型半检缺陷_活糙,0)) AS 成型半检缺陷__活糙,
+								to_char(nvl(s.成型半检缺陷_贴码不良,0)) AS 成型半检缺陷__贴码不良,
+								to_char(nvl(s.成型半检缺陷_干补不良,0)) AS 成型半检缺陷__干补不良,
+								to_char(nvl(s.成型半检缺陷_内漏不合格,0)) AS 成型半检缺陷__内漏不合格,
+								to_char(nvl(s.成型半检缺陷_外漏不合格,0)) AS 成型半检缺陷__外漏不合格,
+								to_char(nvl(s.成型半检缺陷_试水不合格,0)) AS 成型半检缺陷__试水不合格,
+								to_char(nvl(s.成型半检缺陷_隧道窑其他蹦脏,0)) AS 成型半检缺陷__蹦脏,
+								nvl(f.成型半检缺陷__缺陷汇总,0) AS 成型半检缺陷__缺陷汇总,
+								DECODE( NVL( f.成型半检缺陷__缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.成型半检缺陷__缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 成型半检缺陷__缺陷率,
+								to_char(nvl(s.精修缺陷_打磨缺陷_糙活,0)) AS 精修缺陷_打磨缺陷_糙活,
+								to_char(nvl(s.精修缺陷_打磨缺陷_变形,0)) AS 精修缺陷_打磨缺陷_变形,
+								to_char(nvl(s.精修缺陷_打磨缺陷_渣,0)) AS 精修缺陷_打磨缺陷_渣,
+								to_char(nvl(s.精修缺陷_打磨缺陷_管道渣,0)) AS 精修缺陷_打磨缺陷_管道渣,
+								to_char(nvl(s.精修缺陷_打磨缺陷_孔眼不良,0)) AS 精修缺陷_打磨缺陷_孔眼不良,
+								to_char(nvl(s.精修缺陷_打磨缺陷_睹眼,0)) AS 精修缺陷_打磨缺陷_睹眼,
+								to_char(nvl(s.精修缺陷_打磨缺陷_眼歪,0)) AS 精修缺陷_打磨缺陷_眼歪,
+								to_char(nvl(s.精修缺陷_打磨缺陷_丢气孔,0)) AS 精修缺陷_打磨缺陷_丢气孔,
+								to_char(nvl(s.精修缺陷_打磨缺陷_丢眼,0)) AS 精修缺陷_打磨缺陷_丢眼,
+								to_char(nvl(s.精修缺陷_打磨缺陷_水封不良,0)) AS 精修缺陷_打磨缺陷_水封不良,
+								to_char(nvl(s.精修缺陷_打磨缺陷_卡球,0)) AS 精修缺陷_打磨缺陷_卡球,
+								to_char(nvl(s.精修缺陷_打磨缺陷_活糙,0)) AS 精修缺陷_打磨缺陷_活糙,
+								nvl(f.精修缺陷_打磨缺陷_缺陷汇总,0) AS 精修缺陷_打磨缺陷_缺陷汇总,
+								DECODE( NVL( f.精修缺陷_打磨缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.精修缺陷_打磨缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 精修缺陷_打磨缺陷_缺陷率,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_坯脏,0)) AS 精修缺陷_刷洗缺陷_坯脏,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_棕眼,0)) AS 精修缺陷_刷洗缺陷_棕眼,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_裂底,0)) AS 精修缺陷_刷洗缺陷_裂底,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_裂圈,0)) AS 精修缺陷_刷洗缺陷_裂圈,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_裂鼻子,0)) AS 精修缺陷_刷洗缺陷_裂鼻子,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_裂水道,0)) AS 精修缺陷_刷洗缺陷_裂水道,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_裂管,0)) AS 精修缺陷_刷洗缺陷_裂管,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_沾接裂,0)) AS 精修缺陷_刷洗缺陷_沾接裂,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_裂眼,0)) AS 精修缺陷_刷洗缺陷_裂眼,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_糙活,0)) AS 精修缺陷_刷洗缺陷_糙活,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_断浆迹,0)) AS 精修缺陷_刷洗缺陷_断浆迹,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_裂,0)) AS 精修缺陷_刷洗缺陷_裂,
+								to_char(nvl(s.精修缺陷_刷洗缺陷_活糙,0)) AS 精修缺陷_刷洗缺陷_活糙,
+								nvl(f.精修缺陷_刷洗缺陷_缺陷汇总,0) AS 精修缺陷_刷洗缺陷_缺陷汇总,
+								DECODE( NVL( f.精修缺陷_刷洗缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.精修缺陷_刷洗缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL(打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 精修缺陷_刷洗缺陷_缺陷率,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_滚釉,0)) AS 施釉擦坯缺陷_施釉缺陷_滚釉,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_釉薄,0)) AS 施釉擦坯缺陷_施釉缺陷_釉薄,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_釉不匀,0)) AS 施釉擦坯缺陷_施釉缺陷_釉不匀,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_釉磕,0)) AS 施釉擦坯缺陷_施釉缺陷_釉磕,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_釉脏,0)) AS 施釉擦坯缺陷_施釉缺陷_釉脏,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_釉沾,0)) AS 施釉擦坯缺陷_施釉缺陷_釉沾,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_釉绺,0)) AS 施釉擦坯缺陷_施釉缺陷_釉绺,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_针孔,0)) AS 施釉擦坯缺陷_施釉缺陷_针孔,
+								to_char(nvl(s.施釉擦坯缺陷_施釉缺陷_色脏,0)) AS 施釉擦坯缺陷_施釉缺陷_色脏,
+
+								nvl(f.施釉擦坯缺陷_施釉缺陷_缺陷汇总,0) AS 施釉擦坯缺陷_施釉缺陷_缺陷汇总,
+								DECODE( NVL( f.施釉擦坯缺陷_施釉缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.施釉擦坯缺陷_施釉缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 施釉擦坯缺陷_施釉缺陷_缺陷率,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_灌釉不良,0)) AS 施釉擦坯缺陷_擦坯缺陷_灌釉不良,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_擦脏,0)) AS 施釉擦坯缺陷_擦坯缺陷_擦脏,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_崩标,0)) AS 施釉擦坯缺陷_擦坯缺陷_崩标,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_倒标,0)) AS 施釉擦坯缺陷_擦坯缺陷_倒标,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_标污,0)) AS 施釉擦坯缺陷_擦坯缺陷_标污,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_错标,0)) AS 施釉擦坯缺陷_擦坯缺陷_错标,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_丢标,0)) AS 施釉擦坯缺陷_擦坯缺陷_丢标,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_标错位,0)) AS 施釉擦坯缺陷_擦坯缺陷_标错位,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_未灌釉,0)) AS 施釉擦坯缺陷_擦坯缺陷_未灌釉,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_灌磕,0)) AS 施釉擦坯缺陷_擦坯缺陷_灌磕,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_坯磕,0)) AS 施釉擦坯缺陷_擦坯缺陷_坯磕,
+							to_char(nvl(s.施釉擦坯缺陷_擦坯缺陷_碱石,0)) AS 施釉擦坯缺陷_擦坯缺陷_碱石,
+
+								nvl(f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总,0) AS 施釉擦坯缺陷_擦坯缺陷_缺陷汇总,
+								DECODE( NVL( f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 施釉擦坯缺陷_擦坯缺陷_缺陷率,
+								to_char(nvl(s.烧成缺陷_装窑缺陷_落脏,0)) AS 烧成缺陷_装窑缺陷_落脏,
+								to_char(nvl(s.烧成缺陷_装窑缺陷_装沾,0)) AS 烧成缺陷_装窑缺陷_装沾,
+								to_char(nvl(s.烧成缺陷_装窑缺陷_装磕,0)) AS 烧成缺陷_装窑缺陷_装磕,
+								to_char(nvl(s.烧成缺陷_装窑缺陷_装裂,0)) AS 烧成缺陷_装窑缺陷_装裂,
+								to_char(nvl(s.烧成缺陷_装窑缺陷_装走,0)) AS 烧成缺陷_装窑缺陷_装走,
+								to_char(nvl(s.烧成缺陷_装窑缺陷_装脏,0)) AS 烧成缺陷_装窑缺陷_装脏,
+								to_char(nvl(s.烧成缺陷_装窑缺陷_缺釉,0)) AS 烧成缺陷_装窑缺陷_缺釉,
+								to_char(nvl(s.烧成缺陷_装窑缺陷_板折,0)) AS 烧成缺陷_装窑缺陷_板折,
+
+								nvl(f.烧成缺陷_装窑缺陷_缺陷汇总,0) AS 烧成缺陷_装窑缺陷_缺陷汇总,
+								DECODE( NVL( f.烧成缺陷_装窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.烧成缺陷_装窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 烧成缺陷_装窑缺陷_缺陷率,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_水滴,0)) AS 烧成缺陷_烧窑缺陷_水滴,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_窑脏,0)) AS 烧成缺陷_烧窑缺陷_窑脏,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_烧裂,0)) AS 烧成缺陷_烧窑缺陷_烧裂,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_针孔,0)) AS 烧成缺陷_烧窑缺陷_针孔,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_风惊,0)) AS 烧成缺陷_烧窑缺陷_风惊,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_烧生,0)) AS 烧成缺陷_烧窑缺陷_烧生,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_串烟,0)) AS 烧成缺陷_烧窑缺陷_串烟,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_烧坑,0)) AS 烧成缺陷_烧窑缺陷_烧坑,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_桔釉,0)) AS 烧成缺陷_烧窑缺陷_桔釉,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_过火,0)) AS 烧成缺陷_烧窑缺陷_过火,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_火燎,0)) AS 烧成缺陷_烧窑缺陷_火燎,
+								to_char(nvl(s.烧成缺陷_烧窑缺陷_烧走,0)) AS 烧成缺陷_烧窑缺陷_烧走,
+								nvl(f.烧成缺陷_烧窑缺陷_缺陷汇总,0)AS 烧成缺陷_烧窑缺陷_缺陷汇总,
+								DECODE( NVL( f.烧成缺陷_烧窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.烧成缺陷_烧窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 烧成缺陷_烧窑缺陷_缺陷率,
+								TO_CHAR(nvl(s.烧成缺陷_出窑缺陷_磕碰,0))AS 烧成缺陷_出窑缺陷_磕碰,
+								TO_CHAR(nvl(s.烧成缺陷_出窑缺陷_划釉,0))AS 烧成缺陷_出窑缺陷_划釉,
+								nvl(f.烧成缺陷_出窑缺陷_缺陷汇总,0) AS 烧成缺陷_出窑缺陷_缺陷汇总,
+								DECODE( NVL( f.烧成缺陷_出窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.烧成缺陷_出窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 烧成缺陷_出窑缺陷_缺陷率,
+								
+								TO_CHAR(nvl(s.冷修缺陷_修补不良,0)) AS 冷修_冷修缺陷_修补不良,
+								TO_CHAR(nvl(s.冷修缺陷_漏修,0)) AS 冷修_冷修缺陷_漏修,
+								TO_CHAR(nvl(s.冷修缺陷_漏检,0)) AS 冷修_冷修缺陷_漏检,
+								TO_CHAR(nvl(s.冷修缺陷_磕碰,0)) AS 冷修_冷修缺陷_磕碰,
+								TO_CHAR(nvl(s.冷修缺陷_划釉,0)) AS 冷修_冷修缺陷_划釉,
+								nvl(f.冷修_缺陷汇总,0) AS 冷修_冷修缺陷_缺陷汇总,
+								DECODE( NVL( f.冷修_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.冷修_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 冷修_冷修缺陷_缺陷率,
+								
+								TO_CHAR(nvl(s.原料缺陷_泥料缺陷_铜脏,0)) AS 原料缺陷_泥料缺陷_铜脏,
+								TO_CHAR(nvl(s.原料缺陷_泥料缺陷_料脏,0)) AS 原料缺陷_泥料缺陷_料脏,
+								TO_CHAR(nvl(s.原料缺陷_釉料缺陷_铜脏,0)) AS 原料缺陷_釉料缺陷_铜脏, 
+								TO_CHAR(nvl(s.原料缺陷_釉料缺陷_铁脏,0)) AS 原料缺陷_釉料缺陷_铁脏,
+								nvl(f.原料缺陷_缺陷汇总,0) AS 原料缺陷__缺陷汇总,
+								DECODE( NVL( f.原料缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.原料缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 原料缺陷__缺陷率,
+								
+								to_char(nvl(s.其他_隧道窑其他试验不良,0)) AS 其他_隧道窑其他_试验不良,
+								nvl(f.其他_缺陷汇总,0) AS 其他_隧道窑其他_缺陷汇总,
+								DECODE( NVL( f.其他_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.其他_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 其他_隧道窑其他_缺陷率
+								FROM 检验数
+									LEFT JOIN 产品 ON 检验数.GOODSCODE=产品.GOODSCODE
+									LEFT JOIN  产品明细缺陷  s ON 产品.GOODSCODE=s.GOODSCODE
+									LEFT JOIN 产品汇总缺陷 f ON f.GOODSCODE=产品.GOODSCODE 
+									LEFT JOIN  打磨擦洗出窑数  ON 1=1
+											UNION ALL
+									SELECT
+								to_Char(检验数.GOODSCODE),
+								to_Char(检验数.GOODSNAME),
+								to_Char(产品.GOODSSPECIFICATION),
+								to_Char(产品.GOODSTYPENAME),
+								to_Char(产品.LUSTERWAREWEIGHT),
+								to_Char(检验数.检验量),to_Char(检验数.出窑重量),
+								to_Char(检验数.合格量),
+								to_Char(检验数.合格品重量),
+								to_Char(检验数.残品),
+								to_Char(检验数.残品重量),
+								DECODE( NVL( 检验数.合格量, 0 ), 0, '0%', TO_CHAR( ( NVL( 检验数.合格量, 0 ) / DECODE( NVL( 检验数.检验量, 1 ), 0, 1, NVL(检验数.检验量, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 合格率,
+								DECODE( NVL( s.成型半检缺陷_坯脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_坯脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_棕眼, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_棕眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_裂底, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_裂底, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_裂圈, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_裂圈, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_裂鼻子, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_裂鼻子, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_裂水道, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_裂水道, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_裂管, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_裂管, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_沾接裂, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_沾接裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_裂眼, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_裂眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_糙活, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_糙活, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_变形, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_变形, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_渣, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_渣, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_管道渣, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_管道渣, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_孔眼不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_孔眼不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_堵眼, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_堵眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_眼歪, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_眼歪, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_丢气孔, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_丢气孔, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_丢眼, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_丢眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_漏气, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_漏气, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_空泡, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_空泡, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_水封不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_水封不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_漏水, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_漏水, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_卡球, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_卡球, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_冲刷不好, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_冲刷不好, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_泥埂, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_泥埂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_断浆迹, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_断浆迹, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_模迹, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_模迹, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_重皮, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_重皮, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_气泡, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_气泡, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_眼扁, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_眼扁, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_水绺, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_水绺, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_裂, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_活糙, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_活糙, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_贴码不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_贴码不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_干补不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_干补不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_内漏不合格, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_内漏不合格, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_外漏不合格, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_外漏不合格, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_试水不合格, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_试水不合格, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.成型半检缺陷_隧道窑其他蹦脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.成型半检缺陷_隧道窑其他蹦脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.成型半检缺陷__缺陷汇总,
+								DECODE( NVL( f.成型半检缺陷__缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.成型半检缺陷__缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 成型半检缺陷__缺陷率,
+DECODE( NVL( s.精修缺陷_打磨缺陷_糙活, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_糙活, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_变形, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_变形, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_渣, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_渣, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_管道渣, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_管道渣, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_孔眼不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_孔眼不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_睹眼, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_睹眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_眼歪, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_眼歪, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_丢气孔, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_丢气孔, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_丢眼, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_丢眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_水封不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_水封不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_卡球, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_卡球, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_打磨缺陷_活糙, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_打磨缺陷_活糙, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.精修缺陷_打磨缺陷_缺陷汇总,
+								DECODE( NVL( f.精修缺陷_打磨缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.精修缺陷_打磨缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.打磨, 1 ), 0, 1, NVL( 打磨擦洗出窑数.打磨, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 精修缺陷_打磨缺陷_缺陷率,
+DECODE( NVL( s.精修缺陷_刷洗缺陷_坯脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_坯脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_棕眼, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_棕眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_裂底, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_裂底, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_裂圈, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_裂圈, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_裂鼻子, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_裂鼻子, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_裂水道, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_裂水道, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_裂管, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_裂管, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_沾接裂, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_沾接裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_裂眼, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_裂眼, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_糙活, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_糙活, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_断浆迹, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_断浆迹, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_裂, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.精修缺陷_刷洗缺陷_活糙, 0 ), 0, '0%', TO_CHAR( ( NVL( s.精修缺陷_刷洗缺陷_活糙, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.精修缺陷_刷洗缺陷_缺陷汇总,
+								DECODE( NVL( f.精修缺陷_刷洗缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.精修缺陷_刷洗缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.擦洗, 1 ), 0, 1, NVL( 打磨擦洗出窑数.擦洗, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 精修缺陷_刷洗缺陷_缺陷率,
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_滚釉, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_滚釉, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_釉薄, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_釉薄, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_釉不匀, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_釉不匀, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_釉磕, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_釉磕, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_釉脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_釉脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_釉沾, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_釉沾, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_釉绺, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_釉绺, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_针孔, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_针孔, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_施釉缺陷_色脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_施釉缺陷_色脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+	f.施釉擦坯缺陷_施釉缺陷_缺陷汇总,
+								DECODE( NVL( f.施釉擦坯缺陷_施釉缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.施釉擦坯缺陷_施釉缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 施釉擦坯缺陷_施釉缺陷_缺陷率,
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_灌釉不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_灌釉不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_擦脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_擦脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_崩标, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_崩标, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_倒标, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_倒标, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_标污, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_标污, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_错标, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_错标, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_丢标, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_丢标, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_标错位, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_标错位, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_未灌釉, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_未灌釉, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_灌磕, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_灌磕, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_坯磕, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_坯磕, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.施釉擦坯缺陷_擦坯缺陷_碱石, 0 ), 0, '0%', TO_CHAR( ( NVL( s.施釉擦坯缺陷_擦坯缺陷_碱石, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+	f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总,
+								DECODE( NVL( f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.施釉擦坯缺陷_擦坯缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 施釉擦坯缺陷_擦坯缺陷_缺陷率,
+DECODE( NVL( s.烧成缺陷_装窑缺陷_落脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_装窑缺陷_落脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_装窑缺陷_装沾, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_装窑缺陷_装沾, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_装窑缺陷_装磕, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_装窑缺陷_装磕, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_装窑缺陷_装裂, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_装窑缺陷_装裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_装窑缺陷_装走, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_装窑缺陷_装走, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_装窑缺陷_装脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_装窑缺陷_装脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_装窑缺陷_缺釉, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_装窑缺陷_缺釉, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_装窑缺陷_板折, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_装窑缺陷_板折, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.烧成缺陷_装窑缺陷_缺陷汇总,
+								DECODE( NVL( f.烧成缺陷_装窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.烧成缺陷_装窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 烧成缺陷_装窑缺陷_缺陷率,
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_水滴, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_水滴, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_窑脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_窑脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_烧裂, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_烧裂, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_针孔, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_针孔, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_风惊, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_风惊, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_烧生, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_烧生, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_串烟, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_串烟, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_烧坑, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_烧坑, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_桔釉, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_桔釉, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_过火, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_过火, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_火燎, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_火燎, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_烧窑缺陷_烧走, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_烧窑缺陷_烧走, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.烧成缺陷_烧窑缺陷_缺陷汇总,
+								DECODE( NVL( f.烧成缺陷_烧窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.烧成缺陷_烧窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 烧成缺陷_烧窑缺陷_缺陷率,
+DECODE( NVL( s.烧成缺陷_出窑缺陷_磕碰, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_出窑缺陷_磕碰, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.烧成缺陷_出窑缺陷_划釉, 0 ), 0, '0%', TO_CHAR( ( NVL( s.烧成缺陷_出窑缺陷_划釉, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.烧成缺陷_出窑缺陷_缺陷汇总,
+								DECODE( NVL( f.烧成缺陷_出窑缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.烧成缺陷_出窑缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 烧成缺陷_出窑缺陷_缺陷率,
+
+DECODE( NVL( s.冷修缺陷_修补不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.冷修缺陷_修补不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+						DECODE( NVL( s.冷修缺陷_漏修, 0 ), 0, '0%', TO_CHAR( ( NVL( s.冷修缺陷_漏修, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.冷修缺陷_漏检, 0 ), 0, '0%', TO_CHAR( ( NVL( s.冷修缺陷_漏检, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.冷修缺陷_磕碰, 0 ), 0, '0%', TO_CHAR( ( NVL( s.冷修缺陷_磕碰, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.冷修缺陷_划釉, 0 ), 0, '0%', TO_CHAR( ( NVL( s.冷修缺陷_划釉, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.冷修_缺陷汇总 AS 冷修_冷修缺陷_缺陷汇总,
+								DECODE( NVL( f.冷修_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.冷修_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 冷修_冷修缺陷_缺陷率,
+
+DECODE( NVL( s.原料缺陷_泥料缺陷_铜脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.原料缺陷_泥料缺陷_铜脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.原料缺陷_泥料缺陷_料脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.原料缺陷_泥料缺陷_料脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.原料缺陷_釉料缺陷_铜脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.原料缺陷_釉料缺陷_铜脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+DECODE( NVL( s.原料缺陷_釉料缺陷_铁脏, 0 ), 0, '0%', TO_CHAR( ( NVL( s.原料缺陷_釉料缺陷_铁脏, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+f.原料缺陷_缺陷汇总 AS 原料缺陷__缺陷汇总,
+								DECODE( NVL( f.原料缺陷_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.原料缺陷_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 原料缺陷__缺陷率,
+
+DECODE( NVL( s.其他_隧道窑其他试验不良, 0 ), 0, '0%', TO_CHAR( ( NVL( s.其他_隧道窑其他试验不良, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ),
+	f.其他_缺陷汇总 AS 其他_缺陷汇总,
+								DECODE( NVL( f.其他_缺陷汇总, 0 ), 0, '0%', TO_CHAR( ( NVL( f.其他_缺陷汇总, 0 ) / DECODE( NVL( 打磨擦洗出窑数.质量登记, 1 ), 0, 1, NVL( 打磨擦洗出窑数.质量登记, 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) AS 其他_缺陷率
+							FROM 检验数
+									LEFT JOIN 产品 ON 检验数.GOODSCODE=产品.GOODSCODE
+									LEFT JOIN  产品明细缺陷  s ON 产品.GOODSCODE=s.GOODSCODE
+									LEFT JOIN 产品汇总缺陷 f ON f.GOODSCODE=产品.GOODSCODE 
+									LEFT JOIN  打磨擦洗出窑数  ON 1=1
+								WHERE 检验数.GOODSCODE='总计'
+		UNION ALL		SELECT
+								'工序出窑量' AS  产品编码,
+								'' 产品名称,
+								'' 产品规格,
+								''产品类别,
+								'' 重量,
+								'' 检验量,'',
+								'' 合格量,'',
+								'' 残品,'',
+								'' 合格率,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__坯脏,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__棕眼,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂底,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂圈,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂鼻子,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂水道,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂管,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__沾接裂,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__裂眼,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__糙活,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__变形,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__渣,
+								to_Char(检验数.检验量)		 AS 成型半检缺陷__管道渣,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__孔眼不良,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__堵眼,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__眼歪,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__丢气孔,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__丢眼,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__漏气,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__空泡,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__水封不良,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__漏水,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__卡球,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__冲刷不好,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__泥埂,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__断浆迹,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__模迹,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__重皮,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__气泡,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__眼扁,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__水绺,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__裂,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__活糙,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__贴码不良,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__干补不良,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__内漏不合格,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__外漏不合格,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__试水不合格,
+								to_char(检验数.检验量)		 AS 成型半检缺陷_蹦脏,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__缺陷汇总,
+								to_char(检验数.检验量)		 AS 成型半检缺陷__缺陷率,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_糙活,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_变形,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_渣,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_管道渣,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_孔眼不良,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_睹眼,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_眼歪,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_丢气孔,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_丢眼,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_水封不良,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_卡球,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_活糙,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_缺陷汇总,
+								to_char(打磨擦洗出窑数.打磨) AS 精修缺陷_打磨缺陷_缺陷率,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_坯脏,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_棕眼,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂底,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂圈,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂鼻子,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂水道,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂管,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_沾接裂,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂眼,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_糙活,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_断浆迹,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_裂,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_活糙,
+
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_缺陷汇总,
+								to_char(打磨擦洗出窑数.擦洗) AS 精修缺陷_刷洗缺陷_缺陷率,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_滚釉,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉薄,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉不匀,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉磕,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉脏,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉沾,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_釉绺,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_针孔,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_色脏,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_缺陷汇总,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_施釉缺陷_缺陷率,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_灌釉不良,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_擦脏,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_崩标,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_倒标,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_标污,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_错标,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_丢标,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_标错位,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_未灌釉,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_灌磕,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_坯磕,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_碱石,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_缺陷汇总,
+								TO_CHAR(检验数.检验量)		 AS 施釉擦坯缺陷_擦坯缺陷_缺陷率,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_落脏,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_装沾,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_装磕,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_装裂,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_装走,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_装脏,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_缺釉,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_板折,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_缺陷汇总,
+								TO_CHAR(检验数.检验量)		 AS 烧成缺陷_装窑缺陷_缺陷率,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_水滴,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_窑脏,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_烧裂,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_针孔,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_风惊,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_烧生,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_串烟,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_烧坑,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_桔釉,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_过火,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_火燎,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_烧走,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_缺陷汇总,
+								to_char(检验数.检验量)		 AS 烧成缺陷_烧窑缺陷_缺陷率,
+								to_char(检验数.检验量)		 AS 烧成缺陷_出窑缺陷_磕碰,
+								to_char(检验数.检验量)		 AS 烧成缺陷_出窑缺陷_划釉,
+								to_char(检验数.检验量)		 AS 烧成缺陷_出窑缺陷_缺陷汇总,
+								to_char(检验数.检验量)		 AS 烧成缺陷_出窑缺陷_缺陷率,
+								
+								to_char(检验数.检验量)		 AS 冷修_冷修缺陷_修补不良,
+								to_char(检验数.检验量)		 AS 冷修_冷修缺陷_漏修,
+								to_char(检验数.检验量)		 AS 冷修_冷修缺陷_漏检, 
+								to_char(检验数.检验量)		 AS 冷修_冷修缺陷_磕碰,
+								to_char(检验数.检验量)		 AS 冷修_冷修缺陷_划釉,
+								to_char(检验数.检验量)		 AS 冷修_冷修缺陷_缺陷汇总,
+								to_char(检验数.检验量)		 AS 冷修_冷修缺陷_缺陷率,
+
+								to_char(检验数.检验量)		 AS 原料缺陷_泥料缺陷_铜脏,
+								to_char(检验数.检验量)		 AS 原料缺陷_泥料缺陷_料脏,
+								to_char(检验数.检验量)		 AS 原料缺陷_釉料缺陷_铜脏, 
+								to_char(检验数.检验量)		 AS 原料缺陷_釉料缺陷_铁脏,
+								to_char(检验数.检验量)		 AS 原料缺陷__缺陷汇总,
+								to_char(检验数.检验量)		 AS 原料缺陷__缺陷率,
+								
+								to_char(检验数.检验量)		 AS 其他_隧道窑其他_试验不良,
+								to_char(检验数.检验量)		 AS 其他__缺陷汇总,
+								to_char(检验数.检验量)		 AS 其他__缺陷率
+								FROM 检验数 
+									LEFT JOIN  打磨擦洗出窑数  ON 1=1
+									WHERE 检验数.GOODSCODE='总计'
+
+)
+ORDER BY 产品类别,产品编码";
+                }
+            }
+            //获取查询条件
+            List<CDAParameter> sqlPara = new List<CDAParameter>();
+            sqlPara.Add(new CDAParameter("DATEBEGIN", dateBegin, DataType.DateTime));
+            sqlPara.Add(new CDAParameter("DATEEND", dateEnd, DataType.DateTime));
+            sqlPara.Add(new CDAParameter("GOODSNAME", context.Request["goodsid"], DataType.VarChar));
+
+            sqlPara.Add(new CDAParameter("kilproc", Convert.ToInt32(kilproc), DataType.Int32));
+            sqlPara.Add(new CDAParameter("notInproc",notInproc, DataType.Char));
+            sqlPara.Add(new CDAParameter("FunctionalTesting", Convert.ToInt32(FunctionalTesting), DataType.Int32));
+            sqlPara.Add(new CDAParameter("USERCODE", userCode));
+            //sqlPara.Add(new CDAParameter("PROCEDUREID", context.Request["procedureidMaster"]));
+            //获取分页参数
+            int page = HttpContext.Current.Request["page"] is object ? Convert.ToInt32(HttpContext.Current.Request["page"]) : 1;
+            int rows = HttpContext.Current.Request["rows"] is int ? Convert.ToInt32(HttpContext.Current.Request["rows"]) : 10000;
+            string sort = HttpContext.Current.Request["sort"] is object ? HttpContext.Current.Request["sort"] : "m.REPORTCODE";
+            string order = HttpContext.Current.Request["order"] is object ? HttpContext.Current.Request["order"] : "";
+
+            //获取分页数据    
+            int total = 0;
+            //DataTable dt = conn.SelectPages(page, rows, out total, sqlStr, sqlPara.ToArray());
+            DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
+            total = dt.Rows.Count;
+
+            DataTable dts = dt;
+            string jsonStr = new JsonResult(dt) { total = total }.ToJson();
+
+            context.Response.Write(jsonStr);
+
+        }
+
+    }
+
+    public bool IsReusable
+    {
+        get
+        {
+            return false;
+        }
+    }
+
+}

+ 163 - 343
wwwroot/mes/rpt/rpt304/rpt.ashx

@@ -25,7 +25,156 @@ public class rpt : IHttpHandler, IReadOnlySessionState
             string FunctionalTesting = "60"; //功能检测
                                              // 241223 增加成型工号 
             string userCode = context.Request["userCode"];
-
+				string sqltmp = "";
+				 conn.BeginTransaction();
+			//插入如数据 250725
+            if (context.Request["procedureMaster"] == "3")
+            {
+					sqltmp = @" INSERT INTO TMP_PM_PRODUCTIONDATA_CHECKDT(GOODSNAME,
+                                          GROUTINGDAILYDETAILID,
+                                          GOODSID,
+                                          GOODSCODE,
+                                          GROUTINGUSERID,
+                                          GROUTINGUSERCODE,
+                                          CREATETIME,
+                                          PROCEDUREID,
+                                          KILNCARBATCHNO,
+                                          BARCODE,
+                                          VALUEFLAG,
+                                          PRODUCTIONDATAID,
+                                          FPRODUCTIONDATAID) SELECT PD1.GOODSNAME
+													  ,PD1.GROUTINGDAILYDETAILID
+													  ,PD1.GOODSID
+													  ,PD1.GOODSCODE
+													  ,PD1.GROUTINGUSERID
+													  ,PD1.GROUTINGUSERCODE
+													  ,PD1.CREATETIME
+													  ,PD1.PROCEDUREID
+													  ,PD1.KILNCARBATCHNO
+													  ,PD1.BARCODE
+													  ,PD1.VALUEFLAG
+													  ,NVL(PD61.PRODUCTIONDATAID, PD1.PRODUCTIONDATAID) PRODUCTIONDATAID
+													  ,PD1.PRODUCTIONDATAID FPRODUCTIONDATAID
+												  FROM (SELECT *
+														  FROM (SELECT PD28.GOODSNAME
+																	  ,PD28.GROUTINGDAILYDETAILID
+																	  ,PD28.GOODSID
+																	  ,PD28.GOODSCODE
+																	  ,PD28.GOODSLEVELTYPEID
+																	  ,PD28.GROUTINGUSERID
+																	  ,PD28.GROUTINGUSERCODE
+																	  ,PD28.CREATETIME
+																	  ,PD24.PROCEDUREID
+																	  ,PD28.KILNCARBATCHNO
+																	  ,PD28.BARCODE
+																	  ,PD28.PRODUCTIONDATAID
+																	  ,PD28.VALUEFLAG
+																	  ,ROW_NUMBER() OVER(PARTITION BY PD28.PRODUCTIONDATAID ORDER BY PD24.PRODUCTIONDATAID DESC) AS ROWNUMS
+																  FROM TP_PM_PRODUCTIONDATA PD28 -- 重烧质量登记
+																 INNER JOIN TP_PM_PRODUCTIONDATA PD24 -- 重烧修补24 / 冷补42
+																	ON PD24.GROUTINGDAILYDETAILID = PD28.GROUTINGDAILYDETAILID
+																 WHERE PD28.PROCEDUREID = 16
+																   AND PD28.VALUEFLAG = 1
+																   AND PD24.VALUEFLAG = 1
+																   AND PD24.PROCEDUREID IN (55, 13, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+																  AND PD28.CREATETIME >= date'" + dateBegin.ToString("yyyy-MM-dd") + @"'
+																   AND PD28.CREATETIME <= date'" + dateEnd.AddSeconds(1).ToString("yyyy-MM-dd") + @"'
+																   AND ('"+userCode+@"' IS NULL OR '"+userCode+@"' = '' OR
+																	   INSTR(PD28.GROUTINGUSERCODE, '"+userCode+@"') > 0)
+																   AND PD24.PRODUCTIONDATAID < PD28.PRODUCTIONDATAID) T
+														 WHERE ROWNUMS = 1
+														   AND T.PROCEDUREID IN (55, 13)) PD1
+												  LEFT JOIN TP_PM_PRODUCTIONDATA PD61 -- 重烧质量检测
+													ON PD61.PROCEDUREID = 60
+												   AND PD61.VALUEFLAG = 1
+												   AND PD61.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
+												   AND PD61.KILNCARBATCHNO = PD1.KILNCARBATCHNO
+												   AND PD61.PRODUCTIONDATAID > PD1.PRODUCTIONDATAID
+													  -- 取最近的数据
+												   AND NOT EXISTS (SELECT 1
+														  FROM TP_PM_PRODUCTIONDATA PD28C -- 重烧质量登记 重复的
+														 WHERE PD28C.PROCEDUREID = 16
+														   AND PD28C.VALUEFLAG = 1
+														   AND PD28C.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
+														   AND PD28C.KILNCARBATCHNO = PD1.KILNCARBATCHNO
+														   AND PD28C.PRODUCTIONDATAID > PD1.PRODUCTIONDATAID
+														   AND PD28C.PRODUCTIONDATAID < PD61.PRODUCTIONDATAID)
+												 ";
+            }
+            else
+            {
+					sqltmp = @" INSERT INTO TMP_PM_PRODUCTIONDATA_CHECKDT(GOODSNAME,
+                                          GROUTINGDAILYDETAILID,
+                                          GOODSID,
+                                          GOODSCODE,
+                                          GROUTINGUSERID,
+                                          GROUTINGUSERCODE,
+                                          CREATETIME,
+                                          PROCEDUREID,
+                                          KILNCARBATCHNO,
+                                          BARCODE,
+                                          VALUEFLAG,
+                                          PRODUCTIONDATAID,
+                                          FPRODUCTIONDATAID) SELECT PD1.GOODSNAME
+													  ,PD1.GROUTINGDAILYDETAILID
+													  ,PD1.GOODSID
+													  ,PD1.GOODSCODE
+													  ,PD1.GROUTINGUSERID
+													  ,PD1.GROUTINGUSERCODE
+													  ,PD1.CREATETIME
+													  ,PD1.PROCEDUREID
+													  ,PD1.KILNCARBATCHNO
+													  ,PD1.BARCODE
+													  ,PD1.VALUEFLAG
+													  ,NVL(PD61.PRODUCTIONDATAID, PD1.PRODUCTIONDATAID) PRODUCTIONDATAID
+													  ,PD1.PRODUCTIONDATAID FPRODUCTIONDATAID
+												  FROM (SELECT *
+														  FROM (SELECT PD28.GOODSNAME
+																	  ,PD28.GROUTINGDAILYDETAILID
+																	  ,PD28.GOODSID
+																	  ,PD28.GOODSCODE
+																	  ,PD28.GOODSLEVELTYPEID
+																	  ,PD28.GROUTINGUSERID
+																	  ,PD28.GROUTINGUSERCODE
+																	  ,PD28.CREATETIME
+																	  ,PD24.PROCEDUREID
+																	  ,PD28.KILNCARBATCHNO
+																	  ,PD28.BARCODE
+																	  ,PD28.PRODUCTIONDATAID
+																	  ,PD28.VALUEFLAG
+																	  ,ROW_NUMBER() OVER(PARTITION BY PD28.PRODUCTIONDATAID ORDER BY PD24.PRODUCTIONDATAID DESC) AS ROWNUMS
+																  FROM TP_PM_PRODUCTIONDATA PD28 -- 重烧质量登记
+																 INNER JOIN TP_PM_PRODUCTIONDATA PD24 -- 重烧修补24 / 冷补42
+																	ON PD24.GROUTINGDAILYDETAILID = PD28.GROUTINGDAILYDETAILID
+																 WHERE PD28.PROCEDUREID = 28
+																   AND PD28.VALUEFLAG = 1
+																   AND PD24.VALUEFLAG = 1
+																   AND PD24.PROCEDUREID IN (24, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+																   AND PD28.CREATETIME >= date'" + dateBegin.ToString("yyyy-MM-dd") + @"'
+																   AND PD28.CREATETIME <= date'" + dateEnd.AddSeconds(1).ToString("yyyy-MM-dd") + @"'
+																   AND ('"+userCode+@"' IS NULL OR '"+userCode+@"' = '' OR
+																	   INSTR(PD28.GROUTINGUSERCODE, '"+userCode+@"') > 0)
+																   AND PD24.PRODUCTIONDATAID < PD28.PRODUCTIONDATAID) T
+														 WHERE ROWNUMS = 1
+														   AND T.PROCEDUREID = 24) PD1
+												  LEFT JOIN TP_PM_PRODUCTIONDATA PD61 -- 重烧质量检测
+													ON PD61.PROCEDUREID = 61
+												   AND PD61.VALUEFLAG = 1
+												   AND PD61.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
+												   AND PD61.KILNCARBATCHNO = PD1.KILNCARBATCHNO
+												   AND PD61.PRODUCTIONDATAID > PD1.PRODUCTIONDATAID
+													  -- 取最近的数据
+												   AND NOT EXISTS (SELECT 1
+														  FROM TP_PM_PRODUCTIONDATA PD28C -- 重烧质量登记 重复的
+														 WHERE PD28C.PROCEDUREID = 28
+														   AND PD28C.VALUEFLAG = 1
+														   AND PD28C.GROUTINGDAILYDETAILID = PD1.GROUTINGDAILYDETAILID
+														   AND PD28C.KILNCARBATCHNO = PD1.KILNCARBATCHNO
+														   AND PD28C.PRODUCTIONDATAID > PD1.PRODUCTIONDATAID
+														   AND PD28C.PRODUCTIONDATAID < PD61.PRODUCTIONDATAID) ";
+            }
+              
+			 int count = conn.ExecuteNonQuery(sqltmp);
 
             //主表
             string sqlStr = "";
@@ -70,63 +219,8 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 							FROM
 								TP_PM_DEFECT df 
 									 
-							LEFT JOIN (SELECT   pd1.goodsname
-														 ,pd1.groutingdailydetailid
-														 ,pd1.goodsid
-														 ,pd1.goodscode 
-														 ,pd1.groutinguserid
-														 ,pd1.groutingusercode
-														 ,pd1.createtime
-														 ,pd1.procedureid
-														 ,pd1.kilncarbatchno
-														 ,pd1.barcode
-														 ,pd1.valueflag 
-														 ,nvl(pd61.productiondataid, pd1.productiondataid) productiondataid
-														 ,pd1.productiondataid  fproductiondataid
-											FROM (SELECT *
-													FROM (SELECT pd28.goodsname
-																,pd28.groutingdailydetailid
-																,pd28.goodsid
-																,pd28.goodscode
-																,pd28.goodsleveltypeid
-																,pd28.groutinguserid
-																,pd28.groutingusercode
-																,pd28.createtime
-																,pd24.procedureid
-																,pd28.kilncarbatchno
-																,pd28.barcode
-																,pd28.productiondataid
-																,pd28.valueflag
-																,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
-															FROM tp_pm_productiondata pd28 -- 重烧质量登记
-														   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
-															  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
-														   WHERE pd28.procedureid = 28
-															 AND pd28.valueflag = 1
-															 AND pd24.valueflag = 1
-															 AND pd24.procedureid IN (24, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
-															 AND pd28.CREATETIME >= @DATEBEGIN@
-															 AND pd28.CREATETIME <=   @DATEEND@ 
-															 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )
-															 AND pd24.productiondataid < pd28.productiondataid) t
-												   WHERE rownums = 1
-													 AND t.procedureid = 24) pd1
-											LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
-											  ON pd61.procedureid = 61
-											 AND pd61.valueflag = 1
-											 AND pd61.groutingdailydetailid = pd1.groutingdailydetailid
-											 AND pd61.kilncarbatchno = pd1.kilncarbatchno
-											 AND pd61.productiondataid > pd1.productiondataid
-												-- 取最近的数据
-											 AND NOT EXISTS (SELECT 1
-													FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
-												   WHERE pd28c.procedureid = 28
-													 AND pd28c.valueflag = 1
-													 AND pd28c.groutingdailydetailid = pd1.groutingdailydetailid
-													 AND pd28c.kilncarbatchno = pd1.kilncarbatchno
-													 AND pd28c.productiondataid > pd1.productiondataid
-													 AND pd28c.productiondataid < pd61.productiondataid)) pd
-								  ON df.productiondataid in (pd.productiondataid ,pd.fproductiondataid)
+							LEFT JOIN (TMP_PM_PRODUCTIONDATA_CHECKDT) pd
+								  ON (df.productiondataid  = pd.productiondataid or df.productiondataid  = pd.fproductiondataid)
 
 									LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
 									LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
@@ -300,63 +394,8 @@ count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '0100')  THEN (pd.productiondataid
 								TP_PM_DEFECT df
 									LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gd ON  df.BARCODE = gd.BARCODE 
 									
-								LEFT JOIN (SELECT   pd1.goodsname
-														 ,pd1.groutingdailydetailid
-														 ,pd1.goodsid
-														 ,pd1.goodscode 
-														 ,pd1.groutinguserid
-														 ,pd1.groutingusercode
-														 ,pd1.createtime
-														 ,pd1.procedureid
-														 ,pd1.kilncarbatchno
-														 ,pd1.barcode
-														 ,pd1.valueflag 
-														 ,nvl(pd61.productiondataid, pd1.productiondataid) productiondataid
-													     ,pd1.productiondataid  fproductiondataid
-											FROM (SELECT *
-													FROM (SELECT pd28.goodsname
-																,pd28.groutingdailydetailid
-																,pd28.goodsid
-																,pd28.goodscode
-																,pd28.goodsleveltypeid
-																,pd28.groutinguserid
-																,pd28.groutingusercode
-																,pd28.createtime
-																,pd24.procedureid
-																,pd28.kilncarbatchno
-																,pd28.barcode
-																,pd28.productiondataid
-																,pd28.valueflag
-																,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
-															FROM tp_pm_productiondata pd28 -- 重烧质量登记
-														   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
-															  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
-														   WHERE pd28.procedureid = 28
-															 AND pd28.valueflag = 1
-															 AND pd24.valueflag = 1
-															 AND pd24.procedureid IN (24, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
-															 AND pd28.CREATETIME >= @DATEBEGIN@
-															 AND pd28.CREATETIME <=   @DATEEND@ 
-															 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )
-															 AND pd24.productiondataid < pd28.productiondataid) t
-												   WHERE rownums = 1
-													 AND t.procedureid = 24) pd1
-											LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
-											  ON pd61.procedureid = 61
-											 AND pd61.valueflag = 1
-											 AND pd61.groutingdailydetailid = pd1.groutingdailydetailid
-											 AND pd61.kilncarbatchno = pd1.kilncarbatchno
-											 AND pd61.productiondataid > pd1.productiondataid
-												-- 取最近的数据
-											 AND NOT EXISTS (SELECT 1
-													FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
-												   WHERE pd28c.procedureid = 28
-													 AND pd28c.valueflag = 1
-													 AND pd28c.groutingdailydetailid = pd1.groutingdailydetailid
-													 AND pd28c.kilncarbatchno = pd1.kilncarbatchno
-													 AND pd28c.productiondataid > pd1.productiondataid
-													 AND pd28c.productiondataid < pd61.productiondataid)) pd
-								  ON df.productiondataid in (pd.productiondataid ,pd.fproductiondataid)
+								LEFT JOIN ( TMP_PM_PRODUCTIONDATA_CHECKDT ) pd
+								  ON   (df.productiondataid  = pd.productiondataid or df.productiondataid  = pd.fproductiondataid)
 									LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
 									LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
 									LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID 
@@ -1036,63 +1075,8 @@ ORDER BY 产品类别,产品编码";
 
 							FROM
 								TP_PM_DEFECT df
-									LEFT JOIN (SELECT   pd1.goodsname
-														 ,pd1.groutingdailydetailid
-														 ,pd1.goodsid
-														 ,pd1.goodscode 
-														 ,pd1.groutinguserid
-														 ,pd1.groutingusercode
-														 ,pd1.createtime
-														 ,pd1.procedureid
-														 ,pd1.kilncarbatchno
-														 ,pd1.barcode
-														 ,pd1.valueflag 
-														 ,nvl(pd61.productiondataid, pd1.productiondataid) productiondataid
-														 ,pd1.productiondataid  fproductiondataid
-											FROM (SELECT *
-													FROM (SELECT pd28.goodsname
-																,pd28.groutingdailydetailid
-																,pd28.goodsid
-																,pd28.goodscode
-																,pd28.goodsleveltypeid
-																,pd28.groutinguserid
-																,pd28.groutingusercode
-																,pd28.createtime
-																,pd24.procedureid
-																,pd28.kilncarbatchno
-																,pd28.barcode
-																,pd28.productiondataid
-																,pd28.valueflag
-																,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
-															FROM tp_pm_productiondata pd28 -- 重烧质量登记
-														   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
-															  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
-														   WHERE pd28.procedureid = 16
-															 AND pd28.valueflag = 1
-															 AND pd24.valueflag = 1
-															 AND pd24.procedureid IN (55, 13, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
-															 AND pd28.CREATETIME >= @DATEBEGIN@
-															 AND pd28.CREATETIME <=   @DATEEND@ 
-															 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )
-															 AND pd24.productiondataid < pd28.productiondataid) t
-												   WHERE rownums = 1
-													 AND t.procedureid  IN (55, 13)) pd1
-											LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
-											  ON pd61.procedureid = 60
-											 AND pd61.valueflag = 1
-											 AND pd61.groutingdailydetailid = pd1.groutingdailydetailid
-											 AND pd61.kilncarbatchno = pd1.kilncarbatchno
-											 AND pd61.productiondataid > pd1.productiondataid
-												-- 取最近的数据
-											 AND NOT EXISTS (SELECT 1
-													FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
-												   WHERE pd28c.procedureid = 16
-													 AND pd28c.valueflag = 1
-													 AND pd28c.groutingdailydetailid = pd1.groutingdailydetailid
-													 AND pd28c.kilncarbatchno = pd1.kilncarbatchno
-													 AND pd28c.productiondataid > pd1.productiondataid
-													 AND pd28c.productiondataid < pd61.productiondataid)) pd
-								  ON df.productiondataid in (pd.productiondataid ,pd.fproductiondataid)
+									LEFT JOIN (TMP_PM_PRODUCTIONDATA_CHECKDT) pd
+								  ON   (df.productiondataid  = pd.productiondataid or df.productiondataid  = pd.fproductiondataid)
 									INNER JOIN TP_PM_PRODUCTIONDATA PDS ON PDS.BARCODE=PD.BARCODE AND pds.valueflag = 1
 									LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
 									LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
@@ -1282,63 +1266,8 @@ count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '0100')  THEN (pd.productiondataid
 							FROM
 								TP_PM_DEFECT df
 									LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gd ON  df.BARCODE = gd.BARCODE 
-									LEFT JOIN (SELECT   pd1.goodsname
-														 ,pd1.groutingdailydetailid
-														 ,pd1.goodsid
-														 ,pd1.goodscode 
-														 ,pd1.groutinguserid
-														 ,pd1.groutingusercode
-														 ,pd1.createtime
-														 ,pd1.procedureid
-														 ,pd1.kilncarbatchno
-														 ,pd1.barcode
-														 ,pd1.valueflag 
-														 ,nvl(pd61.productiondataid, pd1.productiondataid) productiondataid
-														 ,pd1.productiondataid  fproductiondataid
-											FROM (SELECT *
-													FROM (SELECT pd28.goodsname
-																,pd28.groutingdailydetailid
-																,pd28.goodsid
-																,pd28.goodscode
-																,pd28.goodsleveltypeid
-																,pd28.groutinguserid
-																,pd28.groutingusercode
-																,pd28.createtime
-																,pd24.procedureid
-																,pd28.kilncarbatchno
-																,pd28.barcode
-																,pd28.productiondataid
-																,pd28.valueflag
-																,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
-															FROM tp_pm_productiondata pd28 -- 重烧质量登记
-														   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
-															  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
-														   WHERE pd28.procedureid = 16
-															 AND pd28.valueflag = 1
-															 AND pd24.valueflag = 1
-															 AND pd24.procedureid IN (55, 13, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
-															 AND pd28.CREATETIME >= @DATEBEGIN@
-															 AND pd28.CREATETIME <=   @DATEEND@ 
-															 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )
-															 AND pd24.productiondataid < pd28.productiondataid) t
-												   WHERE rownums = 1
-													 AND t.procedureid in (55, 13)) pd1
-											LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
-											  ON pd61.procedureid = 60
-											 AND pd61.valueflag = 1
-											 AND pd61.groutingdailydetailid = pd1.groutingdailydetailid
-											 AND pd61.kilncarbatchno = pd1.kilncarbatchno
-											 AND pd61.productiondataid > pd1.productiondataid
-												-- 取最近的数据
-											 AND NOT EXISTS (SELECT 1
-													FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
-												   WHERE pd28c.procedureid = 16
-													 AND pd28c.valueflag = 1
-													 AND pd28c.groutingdailydetailid = pd1.groutingdailydetailid
-													 AND pd28c.kilncarbatchno = pd1.kilncarbatchno
-													 AND pd28c.productiondataid > pd1.productiondataid
-													 AND pd28c.productiondataid < pd61.productiondataid)) pd
-								  ON df.productiondataid in (pd.productiondataid ,pd.fproductiondataid)
+									LEFT JOIN (TMP_PM_PRODUCTIONDATA_CHECKDT) pd
+								  ON   (df.productiondataid  = pd.productiondataid or df.productiondataid  = pd.fproductiondataid)
 									INNER JOIN TP_PM_PRODUCTIONDATA PDS ON PDS.BARCODE=PD.BARCODE AND pds.valueflag = 1
 									LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
 									LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
@@ -2005,63 +1934,8 @@ ORDER BY 产品类别,产品编码
 							FROM
 								TP_PM_DEFECT df
 								 
-						LEFT JOIN (SELECT   pd1.goodsname
-													 ,pd1.groutingdailydetailid
-													 ,pd1.goodsid
-													 ,pd1.goodscode 
-													 ,pd1.groutinguserid
-													 ,pd1.groutingusercode
-													 ,pd1.createtime
-													 ,pd1.procedureid
-													 ,pd1.kilncarbatchno
-													 ,pd1.barcode
-													 ,pd1.valueflag 
-													 ,nvl(pd61.productiondataid, pd1.productiondataid) productiondataid
-													  ,pd1.productiondataid  fproductiondataid
-										FROM (SELECT *
-												FROM (SELECT pd28.goodsname
-															,pd28.groutingdailydetailid
-															,pd28.goodsid
-															,pd28.goodscode
-															,pd28.goodsleveltypeid
-															,pd28.groutinguserid
-															,pd28.groutingusercode
-															,pd28.createtime
-															,pd24.procedureid
-															,pd28.kilncarbatchno
-															,pd28.barcode
-															,pd28.productiondataid
-															,pd28.valueflag
-															,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
-														FROM tp_pm_productiondata pd28 -- 重烧质量登记
-													   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
-														  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
-													   WHERE pd28.procedureid = 28
-														 AND pd28.valueflag = 1
-														 AND pd24.valueflag = 1
-														 AND pd24.procedureid IN (24, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
-														 AND pd28.CREATETIME >= @DATEBEGIN@
-														 AND pd28.CREATETIME <=   @DATEEND@ 
-														 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )
-														 AND pd24.productiondataid < pd28.productiondataid) t
-											   WHERE rownums = 1
-												 AND t.procedureid = 42) pd1
-										LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
-										  ON pd61.procedureid = 61
-										 AND pd61.valueflag = 1
-										 AND pd61.groutingdailydetailid = pd1.groutingdailydetailid
-										 AND pd61.kilncarbatchno = pd1.kilncarbatchno
-										 AND pd61.productiondataid > pd1.productiondataid
-											-- 取最近的数据
-										 AND NOT EXISTS (SELECT 1
-												FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
-											   WHERE pd28c.procedureid = 28
-												 AND pd28c.valueflag = 1
-												 AND pd28c.groutingdailydetailid = pd1.groutingdailydetailid
-												 AND pd28c.kilncarbatchno = pd1.kilncarbatchno
-												 AND pd28c.productiondataid > pd1.productiondataid
-												 AND pd28c.productiondataid < pd61.productiondataid)) pd
-							  ON df.productiondataid in (pd.productiondataid ,pd.fproductiondataid)
+						LEFT JOIN (TMP_PM_PRODUCTIONDATA_CHECKDT) pd
+							  ON   (df.productiondataid  = pd.productiondataid or df.productiondataid  = pd.fproductiondataid)
 									LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
 									LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
 									LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID 
@@ -2252,63 +2126,8 @@ count( DISTINCT CASE WHEN df.DEFECTCODE IN ( '0100')  THEN (pd.productiondataid
 								TP_PM_DEFECT df
 									LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gd ON  df.BARCODE = gd.BARCODE 
 									 
-					LEFT JOIN (SELECT   pd1.goodsname
-												 ,pd1.groutingdailydetailid
-												 ,pd1.goodsid
-												 ,pd1.goodscode 
-												 ,pd1.groutinguserid
-												 ,pd1.groutingusercode
-												 ,pd1.createtime
-												 ,pd1.procedureid
-												 ,pd1.kilncarbatchno
-												 ,pd1.barcode
-												 ,pd1.valueflag 
-												 ,nvl(pd61.productiondataid, pd1.productiondataid) productiondataid
-												 ,pd1.productiondataid  fproductiondataid
-									FROM (SELECT *
-											FROM (SELECT pd28.goodsname
-														,pd28.groutingdailydetailid
-														,pd28.goodsid
-														,pd28.goodscode
-														,pd28.goodsleveltypeid
-														,pd28.groutinguserid
-														,pd28.groutingusercode
-														,pd28.createtime
-														,pd24.procedureid
-														,pd28.kilncarbatchno
-														,pd28.barcode
-														,pd28.productiondataid
-														,pd28.valueflag
-														,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
-													FROM tp_pm_productiondata pd28 -- 重烧质量登记
-												   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
-													  ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
-												   WHERE pd28.procedureid = 28
-													 AND pd28.valueflag = 1
-													 AND pd24.valueflag = 1
-													 AND pd24.procedureid IN (24, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
-													 AND pd28.CREATETIME >= @DATEBEGIN@
-													 AND pd28.CREATETIME <=   @DATEEND@ 
-													 AND (@USERCODE@ is null or @USERCODE@ = '' or instr( pd28.GROUTINGUSERCODE,@USERCODE@) > 0 )
-													 AND pd24.productiondataid < pd28.productiondataid) t
-										   WHERE rownums = 1
-											 AND t.procedureid = 42) pd1
-									LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
-									  ON pd61.procedureid = 61
-									 AND pd61.valueflag = 1
-									 AND pd61.groutingdailydetailid = pd1.groutingdailydetailid
-									 AND pd61.kilncarbatchno = pd1.kilncarbatchno
-									 AND pd61.productiondataid > pd1.productiondataid
-										-- 取最近的数据
-									 AND NOT EXISTS (SELECT 1
-											FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
-										   WHERE pd28c.procedureid = 28
-											 AND pd28c.valueflag = 1
-											 AND pd28c.groutingdailydetailid = pd1.groutingdailydetailid
-											 AND pd28c.kilncarbatchno = pd1.kilncarbatchno
-											 AND pd28c.productiondataid > pd1.productiondataid
-											 AND pd28c.productiondataid < pd61.productiondataid)) pd
-						  ON df.productiondataid in (pd.productiondataid ,pd.fproductiondataid)
+					LEFT JOIN (TMP_PM_PRODUCTIONDATA_CHECKDT) pd
+						  ON (df.productiondataid  = pd.productiondataid or df.productiondataid  = pd.fproductiondataid)
 									LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
 									LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
 									LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID  
@@ -2973,6 +2792,7 @@ ORDER BY 产品类别,产品编码";
 
             DataTable dts = dt;
             string jsonStr = new JsonResult(dt) { total = total }.ToJson();
+			conn.Commit();
 
             context.Response.Write(jsonStr);