zoukankan      html  css  js  c++  java
  • jQueryrocket

    在处理一个SQL的时候,遇到了一些问题,数据部分正确但是有一些怎么也不对。

    首先,需要搞明白Union和Union All的区别

    Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

    Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

    区别可以参照:

    Create table Table1  
    (  
        id int not null,  
        name varchar(20) not null  
    )  
      
    Create table Table2  
    (  
        id int not null,  
        name varchar(20) not null  
    )  
    
    Insert into Table1 values (1,'小明')  
    Insert into Table1 values (2,'边兵兵')  
    Insert into Table1 values (3,'袁磊')  
      
    Insert into Table2 values (1,'小明')  
    Insert into Table2 values (2,'柳春平')  
    Insert into Table2 values (3,'张永超')  
    Insert into Table2 values (4,'刘华健')  
    
    compare
    -------------------------------------
    select * from Table1  
    union   
    select * from Table2 
    -------------------------------------
    and
    -------------------------------------
    select * from Table1  
    union all  
    select * from Table2 
    -------------------------------------

    总结一下这里需要注意的一些坑:

    数据字段应与第一个数据集的数据数量一致,并且一定要保证数据字段的顺序对应。

    附修改修改的sql:

    ===============================================================================origin============================================================================
    select board_type,float_line,resource,jumbo_plates_id,jumbo_plates_type,sqm,weight,total_weight,price,return_benifit,
            kfl_price,fj_price,heji_price,tax_rate,se_price,fjfws_price,kflws_price,type,case when LL_flag='1' then '纯来料' else LL_flag end as LL_flag,floatLine_name,
            parameter_name,customer_description,order_number,invoice_id,real_invoice_no,customer_id,jumbo_plates_thickness
    from (
    
    SELECT   pm.jumbo_plates_thickness, o.product_area AS board_type, ioi.float_line, pm.resource, pm.jumbo_plates_id, pm.jumbo_plates_type, SUM(id.quantity) AS sqm, 
                          SUM(ROUND(id.quantity * pm.jumbo_plates_thickness / 408.76, 3)) AS weight,SUM(id.total_weight) as total_weight, SUM(id.total_price) AS price, SUM(id.discount) AS return_benifit, SUM(id.total_price) 
                          - SUM(id.discount) AS kfl_price, SUM(id.processing_price) AS fj_price, SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price) AS heji_price,case when datediff(day,'2019-03-31',?) <=0 then 0.16 else 0.13 end as tax_rate, 
                          case when datediff(day,'2019-03-31',?) <=0 then ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.16))*0.16, 2) 
                               else ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.13))*0.13, 2) end  AS se_price
                          ,case when datediff(day,'2019-03-31',?) <=0 then ROUND(SUM(id.processing_price) / (1 + 0.16), 2) 
                               else  ROUND(SUM(id.processing_price) / (1 + 0.13), 2) end AS fjfws_price, 
                           case when datediff(day,'2019-03-31',?) <=0 then  SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.16))*0.16, 2)
                              else SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.13))*0.13, 2) end AS kflws_price, '1' AS type,'' as LL_flag, fm.floatLine_name, 
                          pam.product_area_name AS parameter_name,o.customer_description,o.processing_jumbo_order_number as order_number,id.invoice_id,rin.real_invoice_no,o.customer_id
    FROM         dbo.invoice_order_item_detail AS id 
                        
                         inner join (SELECT     invoice_id, real_invoice_no
                                FROM          dbo.invoice_order
                                WHERE      (undo_flag = '0') AND (status IN ('3', '4')) AND (input_date >= ?) AND (input_date <= ?)) as rin on rin.invoice_id=id.invoice_id
    
    
                        INNER JOIN
    /*
    (select aa.quantity,aa.total_price,aa.discount,aa.processing_price,aa.tax_rate,bb.float_line,aa.jumbo_plates_id,aa.invoice_id,aa.order_id
    from invoice_order_item_detail as aa
    inner join 
    (select float_line,jumbo_plates_stock_out_id
    from jumbo_plates_stock_out
    group by float_line,jumbo_plates_stock_out_id) as bb on aa.stock_out_id=bb.jumbo_plates_stock_out_id
    ) as id INNER JOIN
    */
                          dbo.jumbo_plates_main AS pm ON id.jumbo_plates_id = pm.jumbo_plates_id INNER JOIN
                              (SELECT     order_id, float_line, invoice_id,stock_out_id
                                FROM          dbo.invoice_order_item
                                GROUP BY order_id, float_line,invoice_id,stock_out_id) AS ioi ON ioi.order_id = id.order_id and ioi.invoice_id = id.invoice_id and ioi.stock_out_id=id.stock_out_id LEFT OUTER JOIN
                          dbo.floatLine_main AS fm ON ioi.float_line = fm.floatLine_id INNER JOIN
                              (SELECT     pjo.processing_jumbo_order_number, pjo.product_area, cm.customer_description,cm.customer_id
                                FROM          dbo.processing_jumbo_orders as pjo
                                inner join customer_main as cm on cm.customer_id=pjo.customer_id) AS o ON o.processing_jumbo_order_number = id.order_id LEFT OUTER JOIN
                          dbo.product_area_main AS pam ON o.product_area = pam.product_area_id
                         
    WHERE      
                          (id.order_id LIKE 'YP%') 
                          --and (o.customer_description like ? or ? is null) and (o.processing_jumbo_order_number like ? or ? is null)
                          --and (pm.jumbo_plates_type like ? or ? is null) and (id.invoice_id like ? or ? is null) and (o.customer_id like ? or ? is null)
    GROUP BY pam.product_area_name, fm.floatLine_name, pm.jumbo_plates_id, pm.jumbo_plates_type, pm.jumbo_plates_thickness, pm.resource, ioi.float_line, --id.tax_rate, 
                          o.product_area,o.customer_description,o.processing_jumbo_order_number,id.invoice_id,rin.real_invoice_no,o.customer_id
    UNION ALL
    SELECT     o_1.product_area AS board_type, id.float_line, '4' AS resource, '' AS jumbo_plates_id, '' AS jumbo_plates_thickness,'' AS jumbo_plates_type, 0 AS sqm, 0 AS weight,0 as total_weight, 0 AS price, 0 AS return_benifit, 
                          0 AS kfl_price, SUM(id.pe_package_price+id.jumbo_package_amount) AS fj_price, SUM(id.pe_package_price+id.jumbo_package_amount) AS heji_price,case when datediff(day,'2019-03-31',?) <=0 then 0.16 else 0.13 end  AS tax_rate,
                          case when datediff(day,'2019-03-31',?) <=0 then round((SUM(id.pe_package_price+id.jumbo_package_amount)/(1+0.16))*0.16,2) 
                              else round((SUM(id.pe_package_price+id.jumbo_package_amount)/(1+0.13))*0.13,2) end  AS se_price, 
                          case when datediff(day,'2019-03-31',?) <=0 then SUM(id.pe_package_price+id.jumbo_package_amount)-round((SUM(id.pe_package_price+id.jumbo_package_amount)/(1+0.16))*0.16,2) 
                              else SUM(id.pe_package_price+id.jumbo_package_amount)-round((SUM(id.pe_package_price+id.jumbo_package_amount)/(1+0.13))*0.13,2) end  AS fjfws_price, 0 AS kflws_price, '1' AS type,'' as LL_flag, fm.floatLine_name, 
                          pam.product_area_name AS parameter_name,o_1.customer_description,o_1.processing_jumbo_order_number as order_number,id.invoice_id,rin.real_invoice_no,o_1.customer_id
    FROM         dbo.invoice_order_item AS id 
                 inner join (SELECT     invoice_id, real_invoice_no
                                FROM          dbo.invoice_order AS invoice_order_1
                                WHERE      (undo_flag = '0') AND (status IN ('3', '4')) AND (input_date >= ?) AND (input_date <= ?)) as rin on rin.invoice_id=id.invoice_id
    
                            INNER JOIN
                              (SELECT     pjo.processing_jumbo_order_number, pjo.product_area, cm.customer_description,cm.customer_id
                                FROM          dbo.processing_jumbo_orders as pjo
                                inner join customer_main as cm on cm.customer_id=pjo.customer_id) AS o_1 ON o_1.processing_jumbo_order_number = id.order_id LEFT OUTER JOIN
                          dbo.product_area_main AS pam ON o_1.product_area = pam.product_area_id LEFT OUTER JOIN
                          dbo.floatLine_main AS fm ON id.float_line = fm.floatLine_id
                          left join
                          (select order_id,tax_rate,stock_out_id
                          from invoice_order_item_detail
                          group by order_id,tax_rate,stock_out_id) as dev1 on dev1.order_id=id.order_id and dev1.stock_out_id=id.stock_out_id
                         
    WHERE     (ISNULL(id.pe_package_price, 0)+isnull(id.jumbo_package_amount,0) <> 0)  AND 
                          (id.order_id LIKE 'YP%') 
                          --and (o_1.customer_description like ? or ? is null) and (o_1.processing_jumbo_order_number like ? or ? is null)
                          --and ('' like ? or ? is null) and (id.invoice_id like ? or ? is null) and (o_1.customer_id like ? or ? is null)
    GROUP BY id.float_line, pam.product_area_name, fm.floatLine_name, o_1.product_area,o_1.customer_description,o_1.processing_jumbo_order_number,id.invoice_id,rin.real_invoice_no,o_1.customer_id
    UNION ALL
    SELECT     o_2.invoice_area AS board_type, id.processing_machine_line as float_line, case when o_2.order_area='5' then '2' else '1' end AS resource, '' AS jumbo_plates_id, '' AS jumbo_plates_thickness,id.processing_product_desc AS jumbo_plates_type, SUM(id.quantity) AS sqm, 
                          SUM(ROUND(id.quantity * dev2.material_thickness / 408.76, 3)) AS weight,SUM(id.total_weight) as total_weight, SUM(id.total_price) AS price, SUM(id.discount) AS return_benifit, SUM(id.total_price) 
                          - SUM(id.discount) AS kfl_price, SUM(id.processing_price) AS fj_price, SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price) AS heji_price, case when datediff(day,'2019-03-31',?) <=0 then 0.16 else 0.13 end  as tax_rate, 
                          case when datediff(day,'2019-03-31',?) <=0 then ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.16))*0.16, 2) 
                               else ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.13))*0.13, 2) end AS se_price, 
                          case when datediff(day,'2019-03-31',?) <=0 then   ROUND(SUM(id.processing_price) / (1 + 0.16), 2) 
                              else  ROUND(SUM(id.processing_price) / (1 + 0.13), 2) end AS fjfws_price,
                           case when datediff(day,'2019-03-31',?) <=0 then SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.16))*0.16, 2)
                              else SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.13))*0.13, 2) end AS kflws_price, '2' AS type,'' as LL_flag, fm.floatLine_name, 
                          pp.parameter_name, o_2.customer_description,o_2.processing_order_number as order_number,id.invoice_id,rin.real_invoice_no,o_2.customer_id
    FROM         dbo.invoice_order_item_detail AS id 
    
                    inner join (SELECT     invoice_id,real_invoice_no
                                FROM          dbo.invoice_order AS invoice_order_2
                                WHERE      (undo_flag = '0') AND (status IN ('3', '4')) AND (input_date >= ?) AND (input_date <= ?)) as rin on rin.invoice_id=id.invoice_id
    
    
                        INNER JOIN
                              (SELECT     order_id, float_line,stock_out_id
                                FROM          dbo.invoice_order_item AS invoice_order_item_2
                                GROUP BY order_id, float_line,stock_out_id) AS ioi_2 ON ioi_2.order_id = id.order_id and ioi_2.stock_out_id=id.stock_out_id LEFT OUTER JOIN
                          dbo.floatLine_main AS fm ON id.processing_machine_line = fm.floatLine_id INNER JOIN
                              (SELECT     pjo.processing_order_number, pjo.product_desc, pjo.invoice_area, cm.customer_description,cm.customer_id,pjo.order_area
                                FROM          dbo.processing_orders as pjo
                                inner join customer_main as cm on cm.customer_id=pjo.customer_number) AS o_2 ON o_2.processing_order_number = id.order_id INNER JOIN
                              (SELECT     processing_order_number, SUM(material_thickness) AS material_thickness
                                FROM          dbo.processing_order_items AS i
                                WHERE      /*EXISTS
                                                           (SELECT     processing_order_number, MIN(processing_order_item_number) AS min_item_number
                                                             FROM          dbo.processing_product AS p
                                                             WHERE      (processing_order_number = i.processing_order_number)
                                                             GROUP BY processing_order_number
                                                             HAVING      (MIN(processing_order_item_number) = i.processing_order_item_number)) */
                                                processing_order_item_number = '1'
                                                AND (product_type=1) AND (SUBSTRING(material_number, 1, 
                                                       2) <> 'LL')
                                GROUP BY processing_order_number) AS dev2 ON dev2.processing_order_number = id.order_id LEFT OUTER JOIN
                              (SELECT     parameter_id, parameter_name
                                FROM          dbo.pmpi_parameter
                                WHERE      (parameter_type_id = '1019')) AS pp ON pp.parameter_id = o_2.invoice_area
                                
        WHERE     
                          (id.order_id LIKE 'RW%') 
                          --and (o_2.customer_description like ? or ? is null) and (o_2.processing_order_number like ? or ? is null)
                          --and (id.processing_product_desc like ? or ? is null) and (id.invoice_id like ? or ? is null) and (o_2.customer_id like ? or ? is null)
    GROUP BY fm.floatLine_name, id.processing_machine_line,  o_2.invoice_area, id.processing_product_desc, pp.parameter_name, o_2.customer_description,o_2.processing_order_number,id.invoice_id,rin.real_invoice_no,o_2.customer_id,o_2.order_area
    UNION ALL
    SELECT     o_1_1.invoice_area AS board_type, id.processing_machine_line as float_line, case when o_1_1.order_area='5' then '2' else '1' end AS resource, '' AS jumbo_plates_id, '' AS jumbo_plates_thickness,id.processing_product_desc AS jumbo_plates_type, SUM(id.quantity) 
                          AS sqm, SUM(ROUND(id.quantity * dev2_1.material_thickness / 408.76, 3)) AS weight,SUM(id.total_weight) as total_weight, SUM(id.total_price) AS price, SUM(id.discount) AS return_benifit, 
                          SUM(id.total_price) - SUM(id.discount) AS kfl_price, SUM(id.processing_price) AS fj_price, SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price) 
                          AS heji_price, case when datediff(day,'2019-03-31',?) <=0 then 0.16 else 0.13 end  as tax_rate, 
                          case when datediff(day,'2019-03-31',?) <=0 then ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.16))*0.16, 2) 
                                else ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.13))*0.13, 2) end AS se_price, 
                          case when datediff(day,'2019-03-31',?) <=0 then ROUND(SUM(id.processing_price) / (1 + 0.16), 2) 
                                else ROUND(SUM(id.processing_price) / (1 + 0.13), 2) end AS fjfws_price, 
                          case when datediff(day,'2019-03-31',?) <=0 then  SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.16))*0.16, 2) 
                                else SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.13))*0.13, 2) end AS kflws_price, '2' AS type,'1' as LL_flag, 
                          fm.floatLine_name, pp_1.parameter_name, o_1_1.customer_description,o_1_1.processing_order_number as order_number,id.invoice_id,rin.real_invoice_no,o_1_1.customer_id
    FROM         dbo.invoice_order_item_detail AS id 
                        inner join (SELECT     invoice_id, real_invoice_no
                                FROM          dbo.invoice_order AS invoice_order_1
                                WHERE      (undo_flag = '0') AND (status IN ('3', '4')) AND (input_date >= ?) AND (input_date <= ?)) as rin on rin.invoice_id=id.invoice_id
    
    
                            INNER JOIN
                              (SELECT     order_id, float_line,stock_out_id
                                FROM          dbo.invoice_order_item AS invoice_order_item_1
                                GROUP BY order_id, float_line,stock_out_id) AS ioi_1 ON ioi_1.order_id = id.order_id and ioi_1.stock_out_id=id.stock_out_id LEFT OUTER JOIN
                          dbo.floatLine_main AS fm ON id.processing_machine_line = fm.floatLine_id INNER JOIN
                              (SELECT     pjo.processing_order_number, pjo.product_desc, pjo.invoice_area, cm.customer_description,cm.customer_id,pjo.order_area
                                FROM          dbo.processing_orders as pjo
                                inner join customer_main as cm on cm.customer_id=pjo.customer_number) AS o_1_1 ON o_1_1.processing_order_number = id.order_id 
                              
                              
                              INNER JOIN
                               --纯来料的厚度
                              (SELECT     dev0_1.processing_order_number, dev0_1.material_thickness
                                FROM          (SELECT     processing_order_number, /*COUNT(group_id) AS c,*/ SUM(material_thickness) AS material_thickness
                                                        FROM          dbo.processing_order_items AS processing_order_items_2
                                                        WHERE      (product_type = '1') AND (processing_order_item_number = '1') AND (SUBSTRING(material_number, 1, 2) = 'LL')
                                                        GROUP BY processing_order_number) AS dev0_1
                                                         
                                                 inner join (select processing_order_number,jumbo_plates_thickness from processing_product where processing_order_item_number = '1') as dev1_2_1
                                                
                                                on (dev0_1.material_thickness = dev1_2_1.jumbo_plates_thickness) and (dev0_1.processing_order_number = dev1_2_1.processing_order_number)
                                                        
                                                       /*LEFT OUTER JOIN
                                                     (SELECT     processing_order_number, COUNT(group_id) AS c
                                                       FROM          dbo.processing_order_items AS processing_order_items_1
                                                       WHERE      (product_type = '1') AND (processing_order_item_number = '1') AND (SUBSTRING(material_number, 1, 2) = 'LL')
                                                       GROUP BY processing_order_number) AS dev1_2_1 ON dev0_1.processing_order_number = dev1_2_1.processing_order_number*/
                                                       
                                ) AS dev2_1 ON dev2_1.processing_order_number = id.order_id 
                                
                                
                                LEFT OUTER JOIN
                              (SELECT     parameter_id, parameter_name
                                FROM          dbo.pmpi_parameter AS pmpi_parameter_1
                                WHERE      (parameter_type_id = '1019')) AS pp_1 ON pp_1.parameter_id = o_1_1.invoice_area
                                
    WHERE     
                          (id.order_id LIKE 'RW%') 
                          --and (o_1_1.customer_description like ? or ? is null) and (o_1_1.processing_order_number like ? or ? is null)
                          --and (id.processing_product_desc like ? or ? is null) and (id.invoice_id like ? or ? is null) and (o_1_1.customer_id like ? or ? is null)
    GROUP BY fm.floatLine_name, id.processing_machine_line,  o_1_1.invoice_area, id.processing_product_desc, pp_1.parameter_name, o_1_1.customer_description,o_1_1.processing_order_number,id.invoice_id,rin.real_invoice_no,o_1_1.customer_id,o_1_1.order_area
    ) as dev
    where (customer_description like ? or ? is null) and (order_number like ? or ? is null) and (jumbo_plates_type like ? or ? is null)
            and (invoice_id like ? or ? is null) and (customer_id like ? or ? is null)
            
    ===============================================================================part01============================================================================
    SELECT
        pm.jumbo_plates_thickness, o.product_area AS board_type, ioi.float_line, pm.resource, pm.jumbo_plates_id, pm.jumbo_plates_type, SUM(id.quantity) AS sqm,
        SUM(ROUND(id.quantity * pm.jumbo_plates_thickness / 408.76, 3)) AS weight, SUM(id.total_weight) AS total_weight, SUM(id.total_price) AS price, SUM(id.discount) AS return_benifit, SUM(id.total_price)
        - SUM(id.discount) AS kfl_price, SUM(id.processing_price) AS fj_price, SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price) AS heji_price, CASE
            WHEN DATEDIFF(DAY, '2019-03-31', '2020-05-21') <= 0 THEN 0.16 ELSE 0.13
        END AS tax_rate,
        CASE
            WHEN DATEDIFF(DAY, '2019-03-31', '2020-05-21') <= 0 THEN ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.16)) * 0.16, 2) ELSE ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.13)) * 0.13, 2)
        END AS se_price
        , CASE
            WHEN DATEDIFF(DAY, '2019-03-31', '2020-05-21') <= 0 THEN ROUND(SUM(id.processing_price) / (1 + 0.16), 2) ELSE ROUND(SUM(id.processing_price) / (1 + 0.13), 2)
        END AS fjfws_price,
        CASE
            WHEN DATEDIFF(DAY, '2019-03-31', '2020-05-21') <= 0 THEN SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.16)) * 0.16, 2) ELSE SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.13)) * 0.13, 2)
        END AS kflws_price, '1' AS type, '' AS LL_flag, fm.floatLine_name,
        pam.product_area_name AS parameter_name, o.customer_description, o.processing_jumbo_order_number AS order_number, id.invoice_id, rin.real_invoice_no, o.customer_id
    FROM dbo.invoice_order_item_detail AS id
    
    INNER JOIN (SELECT
            invoice_id, real_invoice_no
        FROM dbo.invoice_order
        WHERE (undo_flag = '0') AND (status IN ('3', '4')) AND (input_date >= '2020-05-01') AND (input_date <= '2020-05-21')) AS rin
        ON rin.invoice_id = id.invoice_id
    
    
    INNER JOIN /*
                (select aa.quantity,aa.total_price,aa.discount,aa.processing_price,aa.tax_rate,bb.float_line,aa.jumbo_plates_id,aa.invoice_id,aa.order_id
                from invoice_order_item_detail as aa
                inner join 
                (select float_line,jumbo_plates_stock_out_id
                from jumbo_plates_stock_out
                group by float_line,jumbo_plates_stock_out_id) as bb on aa.stock_out_id=bb.jumbo_plates_stock_out_id
                ) as id INNER JOIN
                */
    dbo.jumbo_plates_main AS pm
        ON id.jumbo_plates_id = pm.jumbo_plates_id
    INNER JOIN (SELECT
            order_id, float_line, invoice_id, stock_out_id
        FROM dbo.invoice_order_item
        GROUP BY order_id, float_line, invoice_id, stock_out_id) AS ioi
        ON ioi.order_id = id.order_id AND ioi.invoice_id = id.invoice_id AND ioi.stock_out_id = id.stock_out_id
    LEFT OUTER JOIN dbo.floatLine_main AS fm
        ON ioi.float_line = fm.floatLine_id
    INNER JOIN (SELECT
            pjo.processing_jumbo_order_number, pjo.product_area, cm.customer_description, cm.customer_id
        FROM dbo.processing_jumbo_orders AS pjo
        INNER JOIN customer_main AS cm
            ON cm.customer_id = pjo.customer_id) AS o
        ON o.processing_jumbo_order_number = id.order_id
    LEFT OUTER JOIN dbo.product_area_main AS pam
        ON o.product_area = pam.product_area_id
    
    WHERE (id.order_id LIKE 'YP%')
    --and (o.customer_description like ? or ? is null) and (o.processing_jumbo_order_number like ? or ? is null)
    --and (pm.jumbo_plates_type like ? or ? is null) and (id.invoice_id like ? or ? is null) and (o.customer_id like ? or ? is null)
    GROUP BY pam.product_area_name, fm.floatLine_name, pm.jumbo_plates_id, pm.jumbo_plates_type, pm.jumbo_plates_thickness, pm.resource, ioi.float_line, --id.tax_rate, 
    o.product_area, o.customer_description, o.processing_jumbo_order_number, id.invoice_id, rin.real_invoice_no, o.customer_id    
    ===============================================================================part01============================================================================
    ===============================================================================part02============================================================================    
    SELECT
        o_1.product_area AS board_type, id.float_line, '4' AS resource, '' AS jumbo_plates_id, '' AS jumbo_plates_thickness, '' AS jumbo_plates_type, 0 AS sqm, 0 AS weight, 0 AS total_weight, 0 AS price, 0 AS return_benifit,
        0 AS kfl_price, SUM(id.pe_package_price + id.jumbo_package_amount) AS fj_price, SUM(id.pe_package_price + id.jumbo_package_amount) AS heji_price, CASE
            WHEN DATEDIFF(DAY, '2019-03-31', '2020-05-21') <= 0 THEN 0.16 ELSE 0.13
        END AS tax_rate,
        CASE
            WHEN DATEDIFF(DAY, '2019-03-31', '2020-05-21') <= 0 THEN ROUND((SUM(id.pe_package_price + id.jumbo_package_amount) / (1 + 0.16)) * 0.16, 2) ELSE ROUND((SUM(id.pe_package_price + id.jumbo_package_amount) / (1 + 0.13)) * 0.13, 2)
        END AS se_price,
        CASE
            WHEN DATEDIFF(DAY, '2019-03-31', '2020-05-21') <= 0 THEN SUM(id.pe_package_price + id.jumbo_package_amount) - ROUND((SUM(id.pe_package_price + id.jumbo_package_amount) / (1 + 0.16)) * 0.16, 2) ELSE SUM(id.pe_package_price + id.jumbo_package_amount) - ROUND((SUM(id.pe_package_price + id.jumbo_package_amount) / (1 + 0.13)) * 0.13, 2)
        END AS fjfws_price, 0 AS kflws_price, '1' AS type, '' AS LL_flag, fm.floatLine_name,
        pam.product_area_name AS parameter_name, o_1.customer_description, o_1.processing_jumbo_order_number AS order_number, id.invoice_id, rin.real_invoice_no, o_1.customer_id
    FROM dbo.invoice_order_item AS id
    INNER JOIN (SELECT
            invoice_id, real_invoice_no
        FROM dbo.invoice_order AS invoice_order_1
        WHERE (undo_flag = '0') AND (status IN ('3', '4')) AND (input_date >= '2020-05-01') AND (input_date <= '2020-05-21')) AS rin
        ON rin.invoice_id = id.invoice_id
    
    INNER JOIN (SELECT
            pjo.processing_jumbo_order_number, pjo.product_area, cm.customer_description, cm.customer_id
        FROM dbo.processing_jumbo_orders AS pjo
        INNER JOIN customer_main AS cm
            ON cm.customer_id = pjo.customer_id) AS o_1
        ON o_1.processing_jumbo_order_number = id.order_id
    LEFT OUTER JOIN dbo.product_area_main AS pam
        ON o_1.product_area = pam.product_area_id
    LEFT OUTER JOIN dbo.floatLine_main AS fm
        ON id.float_line = fm.floatLine_id
    LEFT JOIN (SELECT
            order_id, tax_rate, stock_out_id
        FROM invoice_order_item_detail
        GROUP BY order_id, tax_rate, stock_out_id) AS dev1
        ON dev1.order_id = id.order_id AND dev1.stock_out_id = id.stock_out_id
    
    WHERE (ISNULL(id.pe_package_price, 0) + ISNULL(id.jumbo_package_amount, 0) <> 0) AND
    (id.order_id LIKE 'YP%')
    --and (o_1.customer_description like ? or ? is null) and (o_1.processing_jumbo_order_number like ? or ? is null)
    --and ('' like ? or ? is null) and (id.invoice_id like ? or ? is null) and (o_1.customer_id like ? or ? is null)
    GROUP BY id.float_line, pam.product_area_name, fm.floatLine_name, o_1.product_area, o_1.customer_description, o_1.processing_jumbo_order_number, id.invoice_id, rin.real_invoice_no, o_1.customer_id    
    ===============================================================================part02============================================================================
    ===============================================================================part03============================================================================    
    SELECT
        o_2.invoice_area AS board_type, id.processing_machine_line AS float_line, CASE
            WHEN o_2.order_area = '5' THEN '2' ELSE '1'
        END AS resource, '' AS jumbo_plates_id, '' AS jumbo_plates_thickness, id.processing_product_desc AS jumbo_plates_type, SUM(id.quantity) AS sqm,
        SUM(ROUND(id.quantity * dev2.material_thickness / 408.76, 3)) AS weight, SUM(id.total_weight) AS total_weight, SUM(id.total_price) AS price, SUM(id.discount) AS return_benifit, SUM(id.total_price)
        - SUM(id.discount) AS kfl_price, SUM(id.processing_price) AS fj_price, SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price) AS heji_price, CASE
            WHEN DATEDIFF(DAY, '2019-03-31', '2020-05-21') <= 0 THEN 0.16 ELSE 0.13
        END AS tax_rate,
        CASE
            WHEN DATEDIFF(DAY, '2019-03-31', '2020-05-21') <= 0 THEN ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.16)) * 0.16, 2) ELSE ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.13)) * 0.13, 2)
        END AS se_price,
        CASE
            WHEN DATEDIFF(DAY, '2019-03-31', '2020-05-21') <= 0 THEN ROUND(SUM(id.processing_price) / (1 + 0.16), 2) ELSE ROUND(SUM(id.processing_price) / (1 + 0.13), 2)
        END AS fjfws_price,
        CASE
            WHEN DATEDIFF(DAY, '2019-03-31', '2020-05-21') <= 0 THEN SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.16)) * 0.16, 2) ELSE SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.13)) * 0.13, 2)
        END AS kflws_price, '2' AS type, '' AS LL_flag, fm.floatLine_name,
        pp.parameter_name, o_2.customer_description, o_2.processing_order_number AS order_number, id.invoice_id, rin.real_invoice_no, o_2.customer_id
    FROM dbo.invoice_order_item_detail AS id
    
    INNER JOIN (SELECT
            invoice_id, real_invoice_no
        FROM dbo.invoice_order AS invoice_order_2
        WHERE (undo_flag = '0') AND (status IN ('3', '4')) AND (input_date >= '2020-05-01') AND (input_date <= '2020-05-21')) AS rin
        ON rin.invoice_id = id.invoice_id
    
    
    INNER JOIN (SELECT
            order_id, float_line, stock_out_id
        FROM dbo.invoice_order_item AS invoice_order_item_2
        GROUP BY order_id, float_line, stock_out_id) AS ioi_2
        ON ioi_2.order_id = id.order_id AND ioi_2.stock_out_id = id.stock_out_id
    LEFT OUTER JOIN dbo.floatLine_main AS fm
        ON id.processing_machine_line = fm.floatLine_id
    INNER JOIN (SELECT
            pjo.processing_order_number, pjo.product_desc, pjo.invoice_area, cm.customer_description, cm.customer_id, pjo.order_area
        FROM dbo.processing_orders AS pjo
        INNER JOIN customer_main AS cm
            ON cm.customer_id = pjo.customer_number) AS o_2
        ON o_2.processing_order_number = id.order_id
    INNER JOIN (SELECT
            processing_order_number, SUM(material_thickness) AS material_thickness
        FROM dbo.processing_order_items AS i
        WHERE /*EXISTS
                              (SELECT     processing_order_number, MIN(processing_order_item_number) AS min_item_number
                                FROM          dbo.processing_product AS p
                                WHERE      (processing_order_number = i.processing_order_number)
                                GROUP BY processing_order_number
                                HAVING      (MIN(processing_order_item_number) = i.processing_order_item_number)) */
        processing_order_item_number = '1'
        AND (product_type = 1) AND (SUBSTRING(material_number, 1,
        2) <> 'LL')
        GROUP BY processing_order_number) AS dev2
        ON dev2.processing_order_number = id.order_id
    LEFT OUTER JOIN (SELECT
            parameter_id, parameter_name
        FROM dbo.pmpi_parameter
        WHERE (parameter_type_id = '1019')) AS pp
        ON pp.parameter_id = o_2.invoice_area
    
    WHERE (id.order_id LIKE 'RW%')
    --and (o_2.customer_description like ? or ? is null) and (o_2.processing_order_number like ? or ? is null)
    --and (id.processing_product_desc like ? or ? is null) and (id.invoice_id like ? or ? is null) and (o_2.customer_id like ? or ? is null)
    GROUP BY fm.floatLine_name, id.processing_machine_line, o_2.invoice_area, id.processing_product_desc, pp.parameter_name, o_2.customer_description, o_2.processing_order_number, id.invoice_id, rin.real_invoice_no, o_2.customer_id, o_2.order_area    
    ===============================================================================part03============================================================================
    ===============================================================================part04============================================================================
    SELECT
        o_1_1.invoice_area AS board_type, id.processing_machine_line AS float_line, CASE
            WHEN o_1_1.order_area = '5' THEN '2' ELSE '1'
        END AS resource, '' AS jumbo_plates_id, '' AS jumbo_plates_thickness, id.processing_product_desc AS jumbo_plates_type, SUM(id.quantity)
        AS sqm, SUM(ROUND(id.quantity * dev2_1.material_thickness / 408.76, 3)) AS weight, SUM(id.total_weight) AS total_weight, SUM(id.total_price) AS price, SUM(id.discount) AS return_benifit,
        SUM(id.total_price) - SUM(id.discount) AS kfl_price, SUM(id.processing_price) AS fj_price, SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)
        AS heji_price, CASE
            WHEN DATEDIFF(DAY, '2019-03-31', '2020-05-21') <= 0 THEN 0.16 ELSE 0.13
        END AS tax_rate,
        CASE
            WHEN DATEDIFF(DAY, '2019-03-31', '2020-05-21') <= 0 THEN ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.16)) * 0.16, 2) ELSE ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.13)) * 0.13, 2)
        END AS se_price,
        CASE
            WHEN DATEDIFF(DAY, '2019-03-31', '2020-05-21') <= 0 THEN ROUND(SUM(id.processing_price) / (1 + 0.16), 2) ELSE ROUND(SUM(id.processing_price) / (1 + 0.13), 2)
        END AS fjfws_price,
        CASE
            WHEN DATEDIFF(DAY, '2019-03-31', '2020-05-21') <= 0 THEN SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.16)) * 0.16, 2) ELSE SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.13)) * 0.13, 2)
        END AS kflws_price, '2' AS type, '1' AS LL_flag,
        fm.floatLine_name, pp_1.parameter_name, o_1_1.customer_description, o_1_1.processing_order_number AS order_number, id.invoice_id, rin.real_invoice_no, o_1_1.customer_id
    FROM dbo.invoice_order_item_detail AS id
    INNER JOIN (SELECT
            invoice_id, real_invoice_no
        FROM dbo.invoice_order AS invoice_order_1
        WHERE (undo_flag = '0') AND (status IN ('3', '4')) AND (input_date >= '2020-05-01') AND (input_date <= '2020-05-21')) AS rin
        ON rin.invoice_id = id.invoice_id
    
    
    INNER JOIN (SELECT
            order_id, float_line, stock_out_id
        FROM dbo.invoice_order_item AS invoice_order_item_1
        GROUP BY order_id, float_line, stock_out_id) AS ioi_1
        ON ioi_1.order_id = id.order_id AND ioi_1.stock_out_id = id.stock_out_id
    LEFT OUTER JOIN dbo.floatLine_main AS fm
        ON id.processing_machine_line = fm.floatLine_id
    INNER JOIN (SELECT
            pjo.processing_order_number, pjo.product_desc, pjo.invoice_area, cm.customer_description, cm.customer_id, pjo.order_area
        FROM dbo.processing_orders AS pjo
        INNER JOIN customer_main AS cm
            ON cm.customer_id = pjo.customer_number) AS o_1_1
        ON o_1_1.processing_order_number = id.order_id
    
    
    INNER JOIN --纯来料的厚度
    (SELECT
            dev0_1.processing_order_number, dev0_1.material_thickness
        FROM (SELECT
                processing_order_number, /*COUNT(group_id) AS c,*/ SUM(material_thickness) AS material_thickness
            FROM dbo.processing_order_items AS processing_order_items_2
            WHERE (product_type = '1') AND (processing_order_item_number = '1') AND (SUBSTRING(material_number, 1, 2) = 'LL')
            GROUP BY processing_order_number) AS dev0_1
    
        INNER JOIN (SELECT
                processing_order_number, jumbo_plates_thickness
            FROM processing_product
            WHERE processing_order_item_number = '1') AS dev1_2_1
    
            ON (dev0_1.material_thickness = dev1_2_1.jumbo_plates_thickness) AND (dev0_1.processing_order_number = dev1_2_1.processing_order_number) /*LEFT OUTER JOIN
                                                                                                     (SELECT     processing_order_number, COUNT(group_id) AS c
                                                                                                       FROM          dbo.processing_order_items AS processing_order_items_1
                                                                                                       WHERE      (product_type = '1') AND (processing_order_item_number = '1') AND (SUBSTRING(material_number, 1, 2) = 'LL')
                                                                                                       GROUP BY processing_order_number) AS dev1_2_1 ON dev0_1.processing_order_number = dev1_2_1.processing_order_number*/
    
    ) AS dev2_1
        ON dev2_1.processing_order_number = id.order_id
    
    
    LEFT OUTER JOIN (SELECT
            parameter_id, parameter_name
        FROM dbo.pmpi_parameter AS pmpi_parameter_1
        WHERE (parameter_type_id = '1019')) AS pp_1
        ON pp_1.parameter_id = o_1_1.invoice_area
    
    WHERE (id.order_id LIKE 'RW%')
    --and (o_1_1.customer_description like ? or ? is null) and (o_1_1.processing_order_number like ? or ? is null)
    --and (id.processing_product_desc like ? or ? is null) and (id.invoice_id like ? or ? is null) and (o_1_1.customer_id like ? or ? is null)
    GROUP BY fm.floatLine_name, id.processing_machine_line, o_1_1.invoice_area, id.processing_product_desc, pp_1.parameter_name, o_1_1.customer_description, o_1_1.processing_order_number, id.invoice_id, rin.real_invoice_no, o_1_1.customer_id, o_1_1.order_area
    ===============================================================================part04============================================================================
    ===============================================================================partAll============================================================================

    完成后:

    select board_type,float_line,resource,jumbo_plates_id,jumbo_plates_type,sqm,weight,total_weight,price,return_benifit,
            kfl_price,fj_price,heji_price,tax_rate,se_price,fjfws_price,kflws_price,type,case when LL_flag='1' then '纯来料' else LL_flag end as LL_flag,floatLine_name,
            parameter_name,customer_description,order_number,invoice_id,real_invoice_no,customer_id,jumbo_plates_thickness
    from (
    
    SELECT   pm.jumbo_plates_thickness, o.product_area AS board_type, ioi.float_line, pm.resource, pm.jumbo_plates_id, pm.jumbo_plates_type, SUM(id.quantity) AS sqm, 
                          SUM(ROUND(id.quantity * pm.jumbo_plates_thickness / 408.76, 3)) AS weight,SUM(id.total_weight) as total_weight, SUM(id.total_price) AS price, SUM(id.discount) AS return_benifit, SUM(id.total_price) 
                          - SUM(id.discount) AS kfl_price, SUM(id.processing_price) AS fj_price, SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price) AS heji_price,case when datediff(day,'2019-03-31',?) <=0 then 0.16 else 0.13 end as tax_rate, 
                          case when datediff(day,'2019-03-31',?) <=0 then ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.16))*0.16, 2) 
                               else ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.13))*0.13, 2) end  AS se_price
                          ,case when datediff(day,'2019-03-31',?) <=0 then ROUND(SUM(id.processing_price) / (1 + 0.16), 2) 
                               else  ROUND(SUM(id.processing_price) / (1 + 0.13), 2) end AS fjfws_price, 
                           case when datediff(day,'2019-03-31',?) <=0 then  SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.16))*0.16, 2)
                              else SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.13))*0.13, 2) end AS kflws_price, '1' AS type,'' as LL_flag, fm.floatLine_name, 
                          pam.product_area_name AS parameter_name,o.customer_description,o.processing_jumbo_order_number as order_number,id.invoice_id,rin.real_invoice_no,o.customer_id
    FROM         dbo.invoice_order_item_detail AS id 
                        
                         inner join (SELECT     invoice_id, real_invoice_no
                                FROM          dbo.invoice_order
                                WHERE      (undo_flag = '0') AND (status IN ('3', '4')) AND (input_date >= ?) AND (input_date <= ?)) as rin on rin.invoice_id=id.invoice_id
    
    
                        INNER JOIN
    /*
    (select aa.quantity,aa.total_price,aa.discount,aa.processing_price,aa.tax_rate,bb.float_line,aa.jumbo_plates_id,aa.invoice_id,aa.order_id
    from invoice_order_item_detail as aa
    inner join 
    (select float_line,jumbo_plates_stock_out_id
    from jumbo_plates_stock_out
    group by float_line,jumbo_plates_stock_out_id) as bb on aa.stock_out_id=bb.jumbo_plates_stock_out_id
    ) as id INNER JOIN
    */
                          dbo.jumbo_plates_main AS pm ON id.jumbo_plates_id = pm.jumbo_plates_id INNER JOIN
                              (SELECT     order_id, float_line, invoice_id,stock_out_id
                                FROM          dbo.invoice_order_item
                                GROUP BY order_id, float_line,invoice_id,stock_out_id) AS ioi ON ioi.order_id = id.order_id and ioi.invoice_id = id.invoice_id and ioi.stock_out_id=id.stock_out_id LEFT OUTER JOIN
                          dbo.floatLine_main AS fm ON ioi.float_line = fm.floatLine_id INNER JOIN
                              (SELECT     pjo.processing_jumbo_order_number, pjo.product_area, cm.customer_description,cm.customer_id
                                FROM          dbo.processing_jumbo_orders as pjo
                                inner join customer_main as cm on cm.customer_id=pjo.customer_id) AS o ON o.processing_jumbo_order_number = id.order_id LEFT OUTER JOIN
                          dbo.product_area_main AS pam ON o.product_area = pam.product_area_id
                         
    WHERE      
                          (id.order_id LIKE 'YP%') 
                          --and (o.customer_description like ? or ? is null) and (o.processing_jumbo_order_number like ? or ? is null)
                          --and (pm.jumbo_plates_type like ? or ? is null) and (id.invoice_id like ? or ? is null) and (o.customer_id like ? or ? is null)
    GROUP BY pam.product_area_name, fm.floatLine_name, pm.jumbo_plates_id, pm.jumbo_plates_type, pm.jumbo_plates_thickness, pm.resource, ioi.float_line, --id.tax_rate, 
                          o.product_area,o.customer_description,o.processing_jumbo_order_number,id.invoice_id,rin.real_invoice_no,o.customer_id
    UNION ALL
    SELECT     0 AS jumbo_plates_thickness,o_1.product_area AS board_type, id.float_line, '4' AS resource, '' AS jumbo_plates_id, '' AS jumbo_plates_type, 0 AS sqm, 0 AS weight,0 as total_weight, 0 AS price, 0 AS return_benifit, 
                          0 AS kfl_price, SUM(id.pe_package_price+id.jumbo_package_amount) AS fj_price, SUM(id.pe_package_price+id.jumbo_package_amount) AS heji_price,case when datediff(day,'2019-03-31',?) <=0 then 0.16 else 0.13 end  AS tax_rate,
                          case when datediff(day,'2019-03-31',?) <=0 then round((SUM(id.pe_package_price+id.jumbo_package_amount)/(1+0.16))*0.16,2) 
                              else round((SUM(id.pe_package_price+id.jumbo_package_amount)/(1+0.13))*0.13,2) end  AS se_price, 
                          case when datediff(day,'2019-03-31',?) <=0 then SUM(id.pe_package_price+id.jumbo_package_amount)-round((SUM(id.pe_package_price+id.jumbo_package_amount)/(1+0.16))*0.16,2) 
                              else SUM(id.pe_package_price+id.jumbo_package_amount)-round((SUM(id.pe_package_price+id.jumbo_package_amount)/(1+0.13))*0.13,2) end  AS fjfws_price, 0 AS kflws_price, '1' AS type,'' as LL_flag, fm.floatLine_name, 
                          pam.product_area_name AS parameter_name,o_1.customer_description,o_1.processing_jumbo_order_number as order_number,id.invoice_id,rin.real_invoice_no,o_1.customer_id
    FROM         dbo.invoice_order_item AS id 
                 inner join (SELECT     invoice_id, real_invoice_no
                                FROM          dbo.invoice_order AS invoice_order_1
                                WHERE      (undo_flag = '0') AND (status IN ('3', '4')) AND (input_date >= ?) AND (input_date <= ?)) as rin on rin.invoice_id=id.invoice_id
    
                            INNER JOIN
                              (SELECT     pjo.processing_jumbo_order_number, pjo.product_area, cm.customer_description,cm.customer_id
                                FROM          dbo.processing_jumbo_orders as pjo
                                inner join customer_main as cm on cm.customer_id=pjo.customer_id) AS o_1 ON o_1.processing_jumbo_order_number = id.order_id LEFT OUTER JOIN
                          dbo.product_area_main AS pam ON o_1.product_area = pam.product_area_id LEFT OUTER JOIN
                          dbo.floatLine_main AS fm ON id.float_line = fm.floatLine_id
                          left join
                          (select order_id,tax_rate,stock_out_id
                          from invoice_order_item_detail
                          group by order_id,tax_rate,stock_out_id) as dev1 on dev1.order_id=id.order_id and dev1.stock_out_id=id.stock_out_id
                         
    WHERE     (ISNULL(id.pe_package_price, 0)+isnull(id.jumbo_package_amount,0) <> 0)  AND 
                          (id.order_id LIKE 'YP%') 
                          --and (o_1.customer_description like ? or ? is null) and (o_1.processing_jumbo_order_number like ? or ? is null)
                          --and ('' like ? or ? is null) and (id.invoice_id like ? or ? is null) and (o_1.customer_id like ? or ? is null)
    GROUP BY id.float_line, pam.product_area_name, fm.floatLine_name, o_1.product_area,o_1.customer_description,o_1.processing_jumbo_order_number,id.invoice_id,rin.real_invoice_no,o_1.customer_id
    UNION ALL
    SELECT   dev2.material_thickness AS jumbo_plates_thickness,  o_2.invoice_area AS board_type, id.processing_machine_line as float_line, case when o_2.order_area='5' then '2' else '1' end AS resource, '' AS jumbo_plates_id, id.processing_product_desc AS jumbo_plates_type, SUM(id.quantity) AS sqm, 
                          SUM(ROUND(id.quantity * dev2.material_thickness / 408.76, 3)) AS weight,SUM(id.total_weight) as total_weight, SUM(id.total_price) AS price, SUM(id.discount) AS return_benifit, SUM(id.total_price) 
                          - SUM(id.discount) AS kfl_price, SUM(id.processing_price) AS fj_price, SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price) AS heji_price, case when datediff(day,'2019-03-31',?) <=0 then 0.16 else 0.13 end  as tax_rate, 
                          case when datediff(day,'2019-03-31',?) <=0 then ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.16))*0.16, 2) 
                               else ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.13))*0.13, 2) end AS se_price, 
                          case when datediff(day,'2019-03-31',?) <=0 then   ROUND(SUM(id.processing_price) / (1 + 0.16), 2) 
                              else  ROUND(SUM(id.processing_price) / (1 + 0.13), 2) end AS fjfws_price,
                           case when datediff(day,'2019-03-31',?) <=0 then SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.16))*0.16, 2)
                              else SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.13))*0.13, 2) end AS kflws_price, '2' AS type,'' as LL_flag, fm.floatLine_name, 
                          pp.parameter_name, o_2.customer_description,o_2.processing_order_number as order_number,id.invoice_id,rin.real_invoice_no,o_2.customer_id
    FROM         dbo.invoice_order_item_detail AS id 
    
                    inner join (SELECT     invoice_id,real_invoice_no
                                FROM          dbo.invoice_order AS invoice_order_2
                                WHERE      (undo_flag = '0') AND (status IN ('3', '4')) AND (input_date >= ?) AND (input_date <= ?)) as rin on rin.invoice_id=id.invoice_id
    
    
                        INNER JOIN
                              (SELECT     order_id, float_line,stock_out_id
                                FROM          dbo.invoice_order_item AS invoice_order_item_2
                                GROUP BY order_id, float_line,stock_out_id) AS ioi_2 ON ioi_2.order_id = id.order_id and ioi_2.stock_out_id=id.stock_out_id LEFT OUTER JOIN
                          dbo.floatLine_main AS fm ON id.processing_machine_line = fm.floatLine_id INNER JOIN
                              (SELECT     pjo.processing_order_number, pjo.product_desc, pjo.invoice_area, cm.customer_description,cm.customer_id,pjo.order_area
                                FROM          dbo.processing_orders as pjo
                                inner join customer_main as cm on cm.customer_id=pjo.customer_number) AS o_2 ON o_2.processing_order_number = id.order_id INNER JOIN
                              (SELECT     processing_order_number, SUM(material_thickness) AS material_thickness
                                FROM          dbo.processing_order_items AS i
                                WHERE      /*EXISTS
                                                           (SELECT     processing_order_number, MIN(processing_order_item_number) AS min_item_number
                                                             FROM          dbo.processing_product AS p
                                                             WHERE      (processing_order_number = i.processing_order_number)
                                                             GROUP BY processing_order_number
                                                             HAVING      (MIN(processing_order_item_number) = i.processing_order_item_number)) */
                                                processing_order_item_number = '1'
                                                AND (product_type=1) AND (SUBSTRING(material_number, 1, 
                                                       2) <> 'LL')
                                GROUP BY processing_order_number) AS dev2 ON dev2.processing_order_number = id.order_id LEFT OUTER JOIN
                              (SELECT     parameter_id, parameter_name
                                FROM          dbo.pmpi_parameter
                                WHERE      (parameter_type_id = '1019')) AS pp ON pp.parameter_id = o_2.invoice_area
                                
        WHERE     
                          (id.order_id LIKE 'RW%') 
                          --and (o_2.customer_description like ? or ? is null) and (o_2.processing_order_number like ? or ? is null)
                          --and (id.processing_product_desc like ? or ? is null) and (id.invoice_id like ? or ? is null) and (o_2.customer_id like ? or ? is null)
    GROUP BY fm.floatLine_name, id.processing_machine_line,  o_2.invoice_area, id.processing_product_desc, pp.parameter_name, o_2.customer_description,o_2.processing_order_number,id.invoice_id,rin.real_invoice_no,o_2.customer_id,o_2.order_area,dev2.material_thickness
    UNION ALL
    SELECT     0 AS jumbo_plates_thickness, o_1_1.invoice_area AS board_type, id.processing_machine_line as float_line, case when o_1_1.order_area='5' then '2' else '1' end AS resource, '' AS jumbo_plates_id,id.processing_product_desc AS jumbo_plates_type, SUM(id.quantity) 
                          AS sqm, SUM(ROUND(id.quantity * dev2_1.material_thickness / 408.76, 3)) AS weight,SUM(id.total_weight) as total_weight, SUM(id.total_price) AS price, SUM(id.discount) AS return_benifit, 
                          SUM(id.total_price) - SUM(id.discount) AS kfl_price, SUM(id.processing_price) AS fj_price, SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price) 
                          AS heji_price, case when datediff(day,'2019-03-31',?) <=0 then 0.16 else 0.13 end  as tax_rate, 
                          case when datediff(day,'2019-03-31',?) <=0 then ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.16))*0.16, 2) 
                                else ROUND(((SUM(id.total_price) - SUM(id.discount) + SUM(id.processing_price)) / (1 + 0.13))*0.13, 2) end AS se_price, 
                          case when datediff(day,'2019-03-31',?) <=0 then ROUND(SUM(id.processing_price) / (1 + 0.16), 2) 
                                else ROUND(SUM(id.processing_price) / (1 + 0.13), 2) end AS fjfws_price, 
                          case when datediff(day,'2019-03-31',?) <=0 then  SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.16))*0.16, 2) 
                                else SUM(id.total_price) - SUM(id.discount) - ROUND((SUM(id.total_price) - SUM(id.discount) / (1 + 0.13))*0.13, 2) end AS kflws_price, '2' AS type,'1' as LL_flag, 
                          fm.floatLine_name, pp_1.parameter_name, o_1_1.customer_description,o_1_1.processing_order_number as order_number,id.invoice_id,rin.real_invoice_no,o_1_1.customer_id
    FROM         dbo.invoice_order_item_detail AS id 
                        inner join (SELECT     invoice_id, real_invoice_no
                                FROM          dbo.invoice_order AS invoice_order_1
                                WHERE      (undo_flag = '0') AND (status IN ('3', '4')) AND (input_date >= ?) AND (input_date <= ?)) as rin on rin.invoice_id=id.invoice_id
    
    
                            INNER JOIN
                              (SELECT     order_id, float_line,stock_out_id
                                FROM          dbo.invoice_order_item AS invoice_order_item_1
                                GROUP BY order_id, float_line,stock_out_id) AS ioi_1 ON ioi_1.order_id = id.order_id and ioi_1.stock_out_id=id.stock_out_id LEFT OUTER JOIN
                          dbo.floatLine_main AS fm ON id.processing_machine_line = fm.floatLine_id INNER JOIN
                              (SELECT     pjo.processing_order_number, pjo.product_desc, pjo.invoice_area, cm.customer_description,cm.customer_id,pjo.order_area
                                FROM          dbo.processing_orders as pjo
                                inner join customer_main as cm on cm.customer_id=pjo.customer_number) AS o_1_1 ON o_1_1.processing_order_number = id.order_id 
                              
                              
                              INNER JOIN
                               --纯来料的厚度
                              (SELECT     dev0_1.processing_order_number, dev0_1.material_thickness
                                FROM          (SELECT     processing_order_number, /*COUNT(group_id) AS c,*/ SUM(material_thickness) AS material_thickness
                                                        FROM          dbo.processing_order_items AS processing_order_items_2
                                                        WHERE      (product_type = '1') AND (processing_order_item_number = '1') AND (SUBSTRING(material_number, 1, 2) = 'LL')
                                                        GROUP BY processing_order_number) AS dev0_1
                                                         
                                                 inner join (select processing_order_number,jumbo_plates_thickness from processing_product where processing_order_item_number = '1') as dev1_2_1
                                                
                                                on (dev0_1.material_thickness = dev1_2_1.jumbo_plates_thickness) and (dev0_1.processing_order_number = dev1_2_1.processing_order_number)
                                                        
                                                       /*LEFT OUTER JOIN
                                                     (SELECT     processing_order_number, COUNT(group_id) AS c
                                                       FROM          dbo.processing_order_items AS processing_order_items_1
                                                       WHERE      (product_type = '1') AND (processing_order_item_number = '1') AND (SUBSTRING(material_number, 1, 2) = 'LL')
                                                       GROUP BY processing_order_number) AS dev1_2_1 ON dev0_1.processing_order_number = dev1_2_1.processing_order_number*/
                                                       
                                ) AS dev2_1 ON dev2_1.processing_order_number = id.order_id 
                                
                                
                                LEFT OUTER JOIN
                              (SELECT     parameter_id, parameter_name
                                FROM          dbo.pmpi_parameter AS pmpi_parameter_1
                                WHERE      (parameter_type_id = '1019')) AS pp_1 ON pp_1.parameter_id = o_1_1.invoice_area
                                
    WHERE     
                          (id.order_id LIKE 'RW%') 
                          --and (o_1_1.customer_description like ? or ? is null) and (o_1_1.processing_order_number like ? or ? is null)
                          --and (id.processing_product_desc like ? or ? is null) and (id.invoice_id like ? or ? is null) and (o_1_1.customer_id like ? or ? is null)
    GROUP BY fm.floatLine_name, id.processing_machine_line,  o_1_1.invoice_area, id.processing_product_desc, pp_1.parameter_name, o_1_1.customer_description,o_1_1.processing_order_number,id.invoice_id,rin.real_invoice_no,o_1_1.customer_id,o_1_1.order_area
    ) as dev
    where (customer_description like ? or ? is null) and (order_number like ? or ? is null) and (jumbo_plates_type like ? or ? is null)
            and (invoice_id like ? or ? is null) and (customer_id like ? or ? is null)

    结束。

  • 相关阅读:
    关于selenium中的三种等待方式与EC模块的知识
    re.findall用法
    链表及链表的逆置
    通过两个队列实现一个栈
    flask与Django框架的区别
    http协议与https协议
    Maven系列教材 (四)- 通过命令行创建Maven风格的Java项目
    Maven系列教材 (三)- 仓库概念,下载与配置
    Maven系列教材 (二)- 下载与配置Maven
    Maven系列教材 (一)- 什么是Maven
  • 原文地址:https://www.cnblogs.com/kaspar/p/13024354.html
Copyright © 2011-2022 走看看