Select *
  from (Select Customer_No,
               "Customer Name",
               Company,
               Site,
               E1.Part_No,
               Label_1,
               Label_2,
               Description,
               Status,
               Cat1,
               Cat2,
               Decoration,
               Inventory,
               Incoming_Qty,
               "Oldest Lot",
               "Open Order",
               Safety,
               "SO Qty",
               Qty_Not_Reserved    "Qty Not Reserved",
               Remaining_Issue     "Rem_Issue",
               PO                  "PO Qty",
               Next_Receipt_Date   "PO Next Receipt Date",
               X_Ref,
               "X Ref Description",
               E1.Supersedes,
               E1.Superseded_By,
               Related_Supersedes,
               Related_Superseded
          from (Select D.Customer_No,
                       CI.Name "Customer Name",
                       D.Contract Site,
                       D.Company,
                       D.Part_No,
                       pc.Description,
                       Inventory_Part_Status_Par_API.Get_Description(i.part_status) Status,
                       D.Cat1,
                       Cat2.Cat2,
                       Deco.Decoration,
                       X.X_Ref,
                       X.CATALOG_DESC "X Ref Description",
                       Q.QTY Inventory,
                       Q.Qty - Q.Qty_Reserved Qty_Not_Reserved,
                       Incoming_Qty,
                       i.supersedes,
                       INVENTORY_PART_API.Get_Superseded_By(i.CONTRACT,
                                                            i.PART_NO) Superseded_By,
                       Q.Last_Receipt_Date "Oldest Lot",
                       CO.Open_Order "Open Order",
                       IPP.Safety_Stock Safety,
                       WO.QTY "SO Qty",
                       Remaining_Issue,
                       D.Label_1,
                       D.Label_2,
                       PO.PO,
                       PO.Next_Receipt_Date,
                       D.Parent,
                       ROW_NUMBER() over(Partition by D.Contract, D.Part_No Order By D.Cat1) as Row_Num
                  From (Select C.Company,
                               i.Contract,
                               i.Part_No Parent,
                               i.Part_No,
                               C6.Label_1,
                               C6.Label_2,
                               ID.Customer_No,
                               'FG' as Cat1
                          From Inventory_Part i
                         inner join COMPANY_SITE CS
                            on i.Contract = CS.Contract
                         inner join Company_Finance C
                            on C.Company = CS.Company
                         inner join (Select PART_NO,
                                           CONTRACT,
                                           ATTR_VALUE_ALPHA Customer_No
                                      from INVENTORY_PART_CHAR_ALL
                                     where CHARACTERISTIC_CODE = '00032'
                                       and ATTR_VALUE_ALPHA = '&Customer_ID') ID
                            on i.Contract = ID.Contract
                           and i.Part_No = ID.Part_No
                        
                          left join (Select ms.Part_No,
                                           ms.Contract,
                                           Min(COMPONENT_PART) Label_1,
                                           Decode(Min(COMPONENT_PART),
                                                  Max(Component_Part),
                                                  '',
                                                  Max(Component_Part)) Label_2
                                      From MANUF_STRUCTURE MS
                                     inner join INVENTORY_PART_CHAR_ALL c
                                        on ms.contract = c.contract
                                       and ms.component_part = c.part_no
                                    
                                     where MANUF_STRUCT_ALTERNATE_API.Get_State(ms.contract,
                                                                                ms.part_no,
                                                                                ms.eng_chg_level,
                                                                                ms.bom_type,
                                                                                ms.alternative_no) =
                                           'Buildable'
                                       and ms.ALTERNATIVE_NO = '*'
                                       and ms.EFF_PHASE_OUT_DATE is null
                                       and ms.BOM_TYPE_DB = 'M'
                                       and c.CHARACTERISTIC_CODE = '00006'
                                       and c.ATTR_VALUE_ALPHA in
                                           ('IML',
                                            'PAPER INSERT',
                                            'HEAT TRANSFER',
                                            'PSL')
                                     group by ms.Part_No, ms.Contract) C6
                            on i.contract = c6.contract
                           and i.part_no = c6.part_no
                        
                         Where i.ENG_ATTRIBUTE in ('00008', '00010')
                           and i.PART_STATUS in ('A', 'D', 'Q')
                        
                        UNION
                        
                        Select A.Company,
                               A.Contract,
                               B.Part_No Parent,
                               B.Component_Part Part_No,
                               B.Component_Part Label_1,
                               '' as Label_2,
                               A.Customer_No,
                               'RM' as Cat1
                          from (Select C.Company,
                                       i.Contract,
                                       i.Part_No,
                                       ID.Customer_No,
                                       'FG' as Cat1
                                  From Inventory_Part i
                                 inner join COMPANY_SITE CS
                                    on i.Contract = CS.Contract
                                 inner join Company_Finance C
                                    on C.Company = CS.Company
                                 inner join (Select PART_NO,
                                                   CONTRACT,
                                                   ATTR_VALUE_ALPHA Customer_No
                                              from INVENTORY_PART_CHAR_ALL
                                             where CHARACTERISTIC_CODE =
                                                   '00032'
                                               and ATTR_VALUE_ALPHA =
                                                   '&Customer_ID') ID
                                    on i.Contract = ID.Contract
                                   and i.Part_No = ID.Part_No
                                
                                 Where i.ENG_ATTRIBUTE in ('00008', '00010')
                                   and i.PART_STATUS in ('A', 'D', 'Q')) A
                        
                         inner join (Select Contract, Part_No, COMPONENT_PART
                                      from MANUF_STRUCTURE M
                                     Where M.BOM_TYPE_db = 'M'
                                       and M.ALTERNATIVE_NO = '*'
                                       and M.EFF_PHASE_OUT_DATE is null
                                       and OPERATION_NO = '10'
                                       and MANUF_STRUCT_ALTERNATE_API.Get_State(M.contract,
                                                                                M.part_no,
                                                                                M.eng_chg_level,
                                                                                M.bom_type,
                                                                                M.alternative_no) =
                                           'Buildable') B
                            on A.Company = B.Contract
                           and A.Part_No = B.Part_No
                        
                         inner join (Select Contract, PART_NO, ATTR_VALUE_ALPHA
                                      from INVENTORY_PART_CHAR_ALL
                                     where CHARACTERISTIC_CODE = '00006'
                                       and ATTR_VALUE_ALPHA in
                                           ('IML',
                                            'PAPER INSERT',
                                            'HEAT TRANSFER',
                                            'PSL')) C
                            on B.Contract = C.Contract
                           and B.Component_Part = C.Part_No
                        
                        UNION
                        Select ic.Contract Company,
                               ic.Contract,
                               ic.Part_No Parent,
                               ic.Part_No,
                               '' as Label_1,
                               '' as Label_2,
                               ic.ATTR_VALUE_ALPHA Customer_No,
                               'XX' as Cat1
                          from INVENTORY_PART_CHAR_ALL ic
                         inner join Inventory_Part i
                            on ic.Contract = i.Contract
                           and ic.Part_No = i.Part_No
                         where CHARACTERISTIC_CODE = '00032'
                           and ATTR_VALUE_ALPHA = '&Customer_ID'
                           and i.Part_Status in ('A', 'D', 'Q')
                        
                        ) D
                
                 inner join CUSTOMER_INFO CI
                    on D.Customer_No = CI.Customer_ID
                 inner join Inventory_part i
                    on D.Contract = i.Contract
                   and D.Part_No = i.Part_No
                 inner join Part_Catalog pc
                    on D.Part_No = pc.Part_No
                 inner join Inventory_Part_Planning IPP
                    on D.Contract = IPP.Contract
                   and D.Part_NO = IPP.Part_No
                
                  left join (Select Contract,
                                   Catalog_No,
                                   CUSTOMER_PART_NO X_Ref,
                                   CATALOG_DESC
                              from SALES_PART_CROSS_REFERENCE) x
                    on D.Contract = X.Contract
                   and D.Part_No = X.Catalog_No
                
                  left join (Select C.Part_No,
                                   C.Contract,
                                   sum(C.BUY_QTY_DUE - C.QTY_SHIPPED) Open_Order
                              From customer_order_join_cfv C
                             Where C.objstate in
                                   ('Released',
                                    'Blocked',
                                    'Reserved',
                                    'Picked',
                                    'PartiallyDelivered')
                               and C.Customer_No not like ('W%')
                             Group By C.Part_No, C.Contract) CO
                    on D.Part_No = CO.Part_No
                   and D.Contract = CO.Contract
                
                  left join (Select S.Contract,
                                   S.Part_No,
                                   sum(S.QTY_ONHAND) QTY,
                                   sum(S.QTY_RESERVED) Qty_Reserved,
                                   TO_CHAR(min(S.RECEIPT_DATE), 'yyyy-mm-dd') Last_Receipt_Date
                              From Inventory_part_in_stock_UIV S
                             inner join Inventory_Part i
                                on S.Contract = i.Contract
                               and S.Part_No = i.Part_No
                             Where S.QTY_ONHAND > 0
                             Group by S.Contract, S.Part_No) Q
                    on D.Part_NO = Q.Part_NO
                   and D.Contract = Q.Contract
                
                  left join (Select SOURCE_PART_NO,
                                   CONTRACT,
                                   sum(DISPATCH_SOURCE_QTY) Incoming_Qty
                              From RECEIVABLE_DISPATCH_ADV_LINE
                             Where STATE = 'Created'
                             Group by SOURCE_PART_NO, CONTRACT) r
                    on r.contract = d.contract
                   and r.SOURCE_PART_NO = d.part_no
                
                  left join (Select Contract,
                                   Part_No,
                                   sum(REMAINING_NET_SUPPLY_QTY) QTY
                              from Shop_Ord
                             where State in ('Released',
                                             'Started',
                                             'Parked',
                                             'Reserved')
                               and order_code_db = 'M'
                             Group By Contract, Part_No) WO
                    on D.Contract = WO.Contract
                   and D.Part_No = WO.Part_No
                
                  left join (Select Contract,
                                   Part_No,
                                   sum(qty_remain_to_issue) Remaining_Issue
                              from SHOP_MATERIAL_ALLOC_UIV
                             where SOSTATE in ('Released',
                                               'Started',
                                               'Parked',
                                               'Reserved')
                               and order_code_db = 'M'
                             Group By Contract, Part_No) SM
                    on D.Contract = SM.Contract
                   and D.Part_No = SM.Part_No
                
                  left join (Select distinct Contract,
                                            Part_No,
                                            CHARACTERISTIC_TEMPLATE_API.GET_DESCRIPTION(INVENTORY_PART_API.Get_Eng_Attribute(contract,
                                                                                                                             PART_NO)) Cat2
                              from INVENTORY_PART_CHAR_ALL) Cat2
                    on Cat2.Contract = D.Contract
                   and Cat2.Part_No = D.Part_No
                
                  left join (Select distinct Contract,
                                            Part_No,
                                            ATTR_VALUE_ALPHA Decoration
                              from INVENTORY_PART_CHAR_ALL
                             where CHARACTERISTIC_CODE = '00034') Deco
                    on Deco.Contract = D.Contract
                   and Deco.Part_No = D.Part_No
                
                  left join (SELECT Contract,
                                   part_No,
                                   sum(CF$_REM_QTY_RECEIVE) PO,
                                   TO_CHAR(min(PLANNED_RECEIPT_DATE),
                                           'yyyy-mm-dd') Next_Receipt_Date
                              FROM purchase_order_line_all_cfv
                             WHERE state in ('Released', 'Confirmed')
                             GROUP BY Contract, Part_No) PO
                    on PO.Contract = D.Contract
                   and PO.Part_No = D.Part_No
                
                ) E1
        
          left join (Select Q1.*, PS2.Part_No Related_Supersedes
                      from (Select PS.Contract,
                                   PS.Part_No,
                                   PS.COMPONENT_PART,
                                   IP.SUPERSEDES,
                                   INVENTORY_PART_API.Get_Superseded_By(IP.CONTRACT,
                                                                        IP.PART_NO) Superseded_By_Comp
                              From PROD_STRUCTURE PS
                             inner join Inventory_part_cfv IP
                                on PS.Contract = IP.Contract
                               and PS.COMPONENT_PART = IP.Part_No
                             Where PS.EFF_PHASE_OUT_DATE is null
                               and PS.BOM_TYPE_db = 'M'
                               and IP.CF$_PURCHASE_CAT2 in
                                   ('RM07A - IML Label',
                                    'RM04P - CARDBOARD INSERT - NO COST',
                                    'RM07B - PSL Label')) Q1
                    
                     inner join PROD_STRUCTURE PS2
                        on Q1.Contract = PS2.Contract
                       and Q1.Superseded_By_Comp = PS2.Component_Part
                    
                     where PS2.EFF_PHASE_OUT_DATE is null
                       and PS2.BOM_TYPE_db = 'M') S1
            on E1.Part_No = S1.Part_No
           and E1.Site = S1.Contract
        
          left join (Select Q1.*, PS2.Part_No Related_Superseded
                      from (Select PS.Contract,
                                   PS.Part_No,
                                   PS.COMPONENT_PART,
                                   IP.SUPERSEDES,
                                   INVENTORY_PART_API.Get_Superseded_By(IP.CONTRACT,
                                                                        IP.PART_NO) Superseded_By_Comp
                            
                              from PROD_STRUCTURE PS
                             inner join Inventory_part_cfv IP
                                on PS.Contract = IP.Contract
                               and PS.COMPONENT_PART = IP.Part_No
                            
                             Where PS.EFF_PHASE_OUT_DATE is null
                               and PS.BOM_TYPE_db = 'M'
                               and IP.CF$_PURCHASE_CAT2 in
                                   ('RM07A - IML Label',
                                    'RM04P - CARDBOARD INSERT - NO COST',
                                    'RM07B - PSL Label')) Q1
                     inner join PROD_STRUCTURE PS2
                        on Q1.Contract = PS2.Contract
                       and Q1.Supersedes = PS2.Component_Part
                     where PS2.EFF_PHASE_OUT_DATE is null
                       and PS2.BOM_TYPE_db = 'M') S2
            on E1.Part_No = S2.Part_No
           and E1.Site = S2.Contract
        
         Where Row_Num = 1
           and COMPANY LIKE NVL('&COMPANY', '%')
         Order By Parent, Label_1, Cat1, Site)