Need tuning in sql

I have three tables - fund_family a, fund b, fund_registration c. currently the below query is being used to display two columns
fund_family_id and fund_family_nm with fund_family_nm as order by.
select distinct
a.fund_family_id,
a.fund_family_nm,
from
fund_family a, fund b, fund_registration c
where
a.fund_family_id = b.fund_family_id
and b.fund_id = c.fund_id
and c.mail_delivery='Y'
and c.registered_in = 'Y'
and EXISTS (
select 'x' from country_table_id
where b.tr_cd in ('TR05,'TR18')
and d.country_id = c.country_id
and d.web_site_id = '4')
order by a.fund_family_nm
now we need to change the current sorting order of fund_family_nm based on one column in fund table. Now the scenario is -- in fund table, there are
list of fund_id which belongs to some fund_family_id (i.e. suppose one fund_family_id is 1500 and in this fund_family_id there can be n number of fund_id in fund table. now in fund table there is one column called tr_code which is having either one value TR05 or TR18. now we have to sort the fund_family_nm in such a way that first it should display all the fund_family_nm whose fund_id are having tr_code value as TR05 first and then display TR18.
I just tried the below query but I am getting duplicate row for fund_family_nm whose value falls under TR05 and TR18. so can you please help me to tune this sql so that i should not get duplicate rows.
select distinct
a.fund_family_id,
a.fund_family_nm,
b.tr_code
from
fund_family a, fund b, fund_registration c
where
a.fund_family_id = b.fund_family_id
and b.fund_id = c.fund_id
and c.mail_delivery='Y'
and c.registered_in = 'Y'
and EXISTS (
select 'x' from country_table_id
where b.tr_cd in ('TR05,'TR18')
and d.country_id = c.country_id
and d.web_site_id = '4')
order by tr_cd --a.fund_family_nm
Edited by: user11439255 on Jan 9, 2011 2:47 AM

in such a way that first it should display all the fund_family_nm whose fund_id are having tr_code value as TR05 first and then display TR18.?? You want just one row right or two rows? If it has the values TR05 AND TR18 you want to see just TR18, right?
(You use tr_cd and tr_code but I assume that's the same field)
The solution of Etbin would work, but additionally, if the question is about tuning, I'd recommend the usage of JOIN over EXISTS.
SELECT fund_family_id, fund_family_nm, tr_code FROM (
          SELECT a.fund_family_id,a.fund_family_nm,b.tr_cd,
                  ROW_NUMBER() OVER (PARITITION BY a.fund_family_id,a.fund_family_nm ORDER BY b.tr_cd desc) RN
          from fund_family a
          INNER JOIN fund b
           ON a.fund_family_id = b.fund_family_id
          INNER JOIN fund_registration c
           ON b.fund_id = c.fund_id
          INNER JOIN (SELECT DISTINCT country_id FROM country_table_id WHERE d.web_site_id = '4') d
           ON (d.country_id = c.country_id)
          WHERE
               c.mail_delivery='Y'
          and c.registered_in = 'Y'
          and b.tr_cd in ('TR05,'TR18'))
WHERE rn =1          
order by tr_code;

Similar Messages

  • Need Tuning on SQL query

    Dear Guru,
    We are facing a issue in performance part, we have a view as below and taking 9 minutes to throw output when try to query the below view.
    let us know your valuable suggestion ASAP
    CREATE OR REPLACE VIEW VW_WUF_HISTORY
    (SPR, JOB_REFERENCE, JOB_CROSS_REFERENCE, JOB_TYPE_CODE, JOB_STATUS,
    JOB_STATUS_REASON_CODE, FLOW_CREATED_DATE, FILE_CREATED_DATE, PROCESS_ID, WUF_FLOW_TYPE,
    ADDITIONAL_INFORMATION, DATE_OF_ACTION, APPOINTMENT_DATE, APPOINTMENT_TIME_CODE, EARLIEST_APPOINTMENT_TIME,
    LATEST_APPOINTMENT_TIME)
    AS
    SELECT SPR ,
    JOB_REFERENCE ,
    JOB_CROSS_REFERENCE ,
    JOB_TYPE_CODE ,
    JOB_STATUS ,
    JOB_STATUS_REASON_CODE ,
    FLOW_CREATED_DATE ,
    FILE_CREATED_DATE ,
    NVL(PROCESS_ID, USER_ID) PROCESS_ID,
    WUF_FLOW_TYPE ,
    ADDITIONAL_INFORMATION ,
    DECODE(DATE_OF_ACTION, NULL,DATE_OF_ACTION, TO_DATE((TO_CHAR(DATE_OF_ACTION,'DD/MM/YYYY') ||' '|| RPAD(TIME_OF_ACTION,6,0)), 'DD/MM/YYYY HH24:MI:SS')) DATE_OF_ACTION,
    APPOINTMENT_DATE ,
    APPOINTMENT_TIME_CODE ,
    EARLIEST_APPOINTMENT_TIME ,
    LATEST_APPOINTMENT_TIME
    FROM AR_FILE_COMPARE
    WHERE FLOW_REF IN ('D2033001')
    AND WUF_FLOW_TYPE IN ('N', 'R')
    UNION ALL
    SELECT SPR ,
    JOB_REFERENCE ,
    JOB_CROSS_REFERENCE ,
    JOB_TYPE_CODE ,
    JOB_STATUS ,
    JOB_STATUS_REASON_CODE ,
    FLOW_CREATED_DATE ,
    FILE_CREATED_DATE ,
    NVL(PROCESS_ID, USER_ID) PROCESS_ID ,
    WUF_FLOW_TYPE ,
    ADDITIONAL_INFORMATION ,
    DECODE(DATE_OF_ACTION, NULL,DATE_OF_ACTION, TO_DATE((TO_CHAR(DATE_OF_ACTION,'DD/MM/YYYY') ||' '|| RPAD(TIME_OF_ACTION,6,0)), 'DD/MM/YYYY HH24:MI:SS')) DATE_OF_ACTION,
    APPOINTMENT_DATE ,
    APPOINTMENT_TIME_CODE ,
    EARLIEST_APPOINTMENT_TIME ,
    LATEST_APPOINTMENT_TIME
    FROM TR_OFILE_COMPARE
    WHERE FLOW_REF IN ('D2033001')
    AND WUF_FLOW_TYPE IN ('N', 'R')
    UNION ALL
    SELECT
    A.SPR ,
    A.JOB_REFERENCE ,
    A.JOB_CROSS_REFERENCE ,
    A.JOB_TYPE_CODE ,
    A.JOB_STATUS ,
    A.JOB_STATUS_REASON_CODE ,
    A.CREATED_DATE FLOW_CREATED_DATE,
    NULL FILE_CREATED_DATE,
    NVL(PROCESS_ID, USER_ID) PROCESS_ID ,
    A.WUF_FLOW_TYPE ,
    A.ADDITIONAL_INFORMATION ,
    DECODE(B.DATE_OF_ACTION, NULL,B.DATE_OF_ACTION, TO_DATE((TO_CHAR(B.DATE_OF_ACTION,'DD/MM/YYYY') ||' '|| RPAD(B.TIME_OF_ACTION,6,0)), 'DD/MM/YYYY HH24:MI:SS')) DATE_OF_ACTION,
    C.APPOINTMENT_DATE ,
    C.APPOINTMENT_TIME_CODE ,
    C.EARLIEST_APPOINTMENT_TIME ,
    C. LATEST_APPOINTMENT_TIME
    FROM TR_WUF_JOB_DETAIL A ,
    TR_WUF_JOB_VISIT B ,
    TR_WUF_NEW_APPT C
    WHERE A.SPR = B.SPR (+)
    AND A.SPR = C.SPR (+)
    AND A.JOB_REFERENCE = B.JOB_REFERENCE (+)
    AND A.JOB_REFERENCE = C.JOB_REFERENCE (+)
    AND A.CREATED_DATE = B.CREATED_DATE (+)
    AND A.CREATED_DATE = C.CREATED_DATE (+)
    AND A.EXCEP_CODE IS NULL
    AND WUF_FLOW_TYPE IN ('N', 'R')
    /

    What were you expecting the response time to be?
    Maybe 9 minutes is excellent.Yes 9 minutes is excellent!
    With 9 minuts I wouldn't been able to read half of it.

  • Permissions needed for Applying SQL Tuning Sets/SQL Plans 11g?

    What permission are needed for a user to apply/activate sql tuning sets (sql plans) in 11g? The user can capture and move the the sql tuning sets from a 10g database to an 11g database but is getting "ORA-01031: insufficient privileges" when trying to activate/apply the sqlplans in 11g.
    The user has:
    ADMINISTER SQL MANAGEMENT OBJECT and ADMINISTER SQL TUNING SET and EXECUTE on SYS.DBMS_SPM
    The user is an administrator for our Data Warehouse team but they do not have sysdba priviliges.
    Do you also know of a good white paper that covers the step by step instructions and permissions needed for aquiring and applying/activating sqlplans?
    If more information is needed in order to respond please advise.
    Thank you

    What permission are needed for a user to apply/activate sql tuning sets (sql plans) in 11g? The user can capture and move the the sql tuning sets from a 10g database to an 11g database but is getting "ORA-01031: insufficient privileges" when trying to activate/apply the sqlplans in 11g.
    The user has:
    ADMINISTER SQL MANAGEMENT OBJECT and ADMINISTER SQL TUNING SET and EXECUTE on SYS.DBMS_SPM
    The user is an administrator for our Data Warehouse team but they do not have sysdba priviliges.
    Do you also know of a good white paper that covers the step by step instructions and permissions needed for aquiring and applying/activating sqlplans?
    If more information is needed in order to respond please advise.
    Thank you

  • Need clear steps for doing performance tuning on SQL Server 2008 R2 (DB Engine, Reporting Services and Integration Services)

    We have to inverstigate about a reporting solution where things are getting slow (may be material, database design, network matters).
    I have red a lot in MSDN and some books about performance tuning on SQL Server 2008 R2 (or other) but frankly, I feel a little lost in all that stuff
    I'am looking for practical steps in order to do the tuning. Someone had like a recipe for that : a success story...
    My (brain storm) Methodology should follow these steps:
     Resource bottlenecks: CPU, memory, and I/O bottlenecks
     tempdb bottlenecks
     A slow-running user query : Missing indexes, statistics,...
     Use performance counters : there are many, can one give us the list of the most important
    how to do fine tuning about SQL Server configuration
    SSRS, SSIS configuration ? 
    And do the recommandations.
    Thanks
    "there is no Royal Road to Mathematics, in other words, that I have only a very small head and must live with it..."
    Edsger W. Dijkstra

    Hello,
    There is no clear defined step which can be categorized as step by step to performance tuning.Your first goal is to find out cause or drill down to factor causing slowness of SQL server it can be poorly written query ,missing indexes,outdated stats.RAM crunch
    CPU crunch so on and so forth.
    I generally refer to below doc for SQL server tuning
    http://technet.microsoft.com/en-us/library/dd672789(v=sql.100).aspx
    For SSIS tuning i refer below doc.
    http://technet.microsoft.com/library/Cc966529#ECAA
    http://msdn.microsoft.com/en-us/library/ms137622(v=sql.105).aspx
    When I face issue i generally look at wait stats ,wait stats give you idea about on what resource query was waiting.
    --By Jonathan KehayiasSELECT TOP 10
    wait_type ,
    max_wait_time_ms wait_time_ms ,
    signal_wait_time_ms ,
    wait_time_ms - signal_wait_time_ms AS resource_wait_time_ms ,
    100.0 * wait_time_ms / SUM(wait_time_ms) OVER ( )
    AS percent_total_waits ,
    100.0 * signal_wait_time_ms / SUM(signal_wait_time_ms) OVER ( )
    AS percent_total_signal_waits ,
    100.0 * ( wait_time_ms - signal_wait_time_ms )
    / SUM(wait_time_ms) OVER ( ) AS percent_total_resource_waits
    FROM sys.dm_os_wait_stats
    WHERE wait_time_ms > 0 -- remove zero wait_time
    AND wait_type NOT IN -- filter out additional irrelevant waits
    ( 'SLEEP_TASK', 'BROKER_TASK_STOP', 'BROKER_TO_FLUSH',
    'SQLTRACE_BUFFER_FLUSH','CLR_AUTO_EVENT', 'CLR_MANUAL_EVENT',
    'LAZYWRITER_SLEEP', 'SLEEP_SYSTEMTASK', 'SLEEP_BPOOL_FLUSH',
    'BROKER_EVENTHANDLER', 'XE_DISPATCHER_WAIT', 'FT_IFTSHC_MUTEX',
    'CHECKPOINT_QUEUE', 'FT_IFTS_SCHEDULER_IDLE_WAIT',
    'BROKER_TRANSMITTER', 'FT_IFTSHC_MUTEX', 'KSOURCE_WAKEUP',
    'LAZYWRITER_SLEEP', 'LOGMGR_QUEUE', 'ONDEMAND_TASK_QUEUE',
    'REQUEST_FOR_DEADLOCK_SEARCH', 'XE_TIMER_EVENT', 'BAD_PAGE_PROCESS',
    'DBMIRROR_EVENTS_QUEUE', 'BROKER_RECEIVE_WAITFOR',
    'PREEMPTIVE_OS_GETPROCADDRESS', 'PREEMPTIVE_OS_AUTHENTICATIONOPS',
    'WAITFOR', 'DISPATCHER_QUEUE_SEMAPHORE', 'XE_DISPATCHER_JOIN',
    'RESOURCE_QUEUE' )
    ORDER BY wait_time_ms DESC
    use below link to analyze wait stats
    http://www.sqlskills.com/blogs/paul/wait-statistics-or-please-tell-me-where-it-hurts/
    HTH
    PS: for reporting services you can post in SSRS forum
    Please mark this reply as the answer or vote as helpful, as appropriate, to make it useful for other readers

  • Complex Query which needs tuning

    Hello :
    I have a complex query that needs to be tuned. I have little experience in tuning the sql and hence taking the help of your guys.
    The Query is as given below:
    Database version 11g
    SELECT DISTINCT P.RESPONSIBILITY, P.PRODUCT_MAJOR, P.PRODUCT_MINOR,
    P.PRODUCT_SERIES, P.PRODUCT_CATEGORY AS Category1, SO.REGION_CODE,
    SO.STORE_CODE, S.Store_Name, SOL.PRODUCT_CODE, PRI.REPLENISHMENT_TYPE,
    PRI.SUPPLIER_CODE,
    SOL.SOLD_WITH_NIC, SOL.SUGGESTED_PRICE,
    PRI.INVOICE_COST, SOL.FIFO_COST,
    SO.ORDER_TYPE_CODE, SOL.DOCUMENT_NUM,
    SOS.SLSP_CD, '' AS FNAME, '' AS LNAME,
    SOL.PRICE_EXCEPTION_CODE, SOL.AS_IS,
    SOL.STATUS_DATE,
    Sum(SOL.QUANTITY) AS SumOfQUANTITY,
    Sum(SOL.EXTENDED_PRICE) AS SumOfEXTENDED_PRICE
    --Format([SALES_ORDER].[STATUS_DATE],"mmm-yy") AS [Month]
    FROM PRODUCT P,
    PRODUCT_MAJORS PM,
    SALES_ORDER_LINE SOL,
    STORE S,
    SALES_ORDER SO,
    SALES_ORDER_SPLITS SOS,
    PRODUCT_REGIONAL_INFO PRI,
    REGION_MAP R
    WHERE P.product_major = PM.PRODUCT_MAJOR
    and SOL.PRODUCT_CODE = P.PRODUCT_CODE
    and SO.STORE_CODE = S.STORE_CODE
    AND SO.REGION_CODE = S.REGION_CODE
    AND SOL.REGION_CODE = SO.REGION_CODE
    AND SOL.DOCUMENT_NUM = SO.DOCUMENT_NUM
    AND SOL.DELIVERY_SEQUENCE_NUM = SO.DELIVERY_SEQUENCE_NUM
    AND SOL.STATUS_CODE = SO.STATUS_CODE
    AND SOL.STATUS_DATE = SO.STATUS_DATE
    AND SO.REGION_CODE = SOS.REGION_CODE
    AND SO.DOCUMENT_NUM = SOS.DOCUMENT_NUM
    AND SOL.PRODUCT_CODE = PRI.PRODUCT_CODE
    AND PRI.REGION_CODE = R.CORP_REGION_CODE
    AND SO.REGION_CODE = R.DS_REGION_CODE
    AND P.PRODUCT_MAJOR In ('STEREO','TELEVISION','VIDEO')
    AND SOL.STATUS_CODE = 'D'
    AND SOL.STATUS_DATE BETWEEN '01-JUN-09' AND '30-JUN-09'
    AND SO.STORE_CODE NOT IN
    ('10','20','30','40','70','91','95','93','94','96','97','98','99',
    '9V','9W','9X','9Y','9Z','8Z',
    '8Y','92','CZ','FR','FS','FT','FZ','FY','FX','FW','FV','GZ','GY','GU','GW','GV','GX')
    GROUP BY
    P.RESPONSIBILITY, P.PRODUCT_MAJOR, P.PRODUCT_MINOR, P.PRODUCT_SERIES, P.PRODUCT_CATEGORY,
    SO.REGION_CODE, SO.STORE_CODE, /*S.Short Name, */
    S.Store_Name, SOL.PRODUCT_CODE,
    PRI.REPLENISHMENT_TYPE, PRI.SUPPLIER_CODE,
    SOL.SOLD_WITH_NIC, SOL.SUGGESTED_PRICE, PRI.INVOICE_COST,
    SOL.FIFO_COST, SO.ORDER_TYPE_CODE, SOL.DOCUMENT_NUM,
    SOS.SLSP_CD, '', '', SOL.PRICE_EXCEPTION_CODE,
    SOL.AS_IS, SOL.STATUS_DATE
    Explain Plan:
    SELECT STATEMENT, GOAL = ALL_ROWS               Cost=583     Cardinality=1     Bytes=253
    HASH GROUP BY               Cost=583     Cardinality=1     Bytes=253
    FILTER                         
    NESTED LOOPS               Cost=583     Cardinality=1     Bytes=253
    HASH JOIN OUTER               Cost=582     Cardinality=1     Bytes=234
    NESTED LOOPS                         
    NESTED LOOPS               Cost=571     Cardinality=1     Bytes=229
    NESTED LOOPS               Cost=571     Cardinality=1     Bytes=207
    NESTED LOOPS               Cost=569     Cardinality=2     Bytes=368
    NESTED LOOPS               Cost=568     Cardinality=2     Bytes=360
    NESTED LOOPS               Cost=556     Cardinality=3     Bytes=435
    NESTED LOOPS     Cost=178     Cardinality=4     Bytes=336
    NESTED LOOPS          Cost=7     Cardinality=1     Bytes=49
    HASH JOIN               Cost=7     Cardinality=1     Bytes=39
    VIEW     Object owner=CORP     Object name=index$_join$_015     Cost=2     Cardinality=3     Bytes=57
    HASH JOIN                         
    INLIST ITERATOR                         
    INDEX UNIQUE SCAN     Object owner=CORP     Object name=PRODMJR_PK     Cost=0     Cardinality=3     Bytes=57
    INDEX FAST FULL SCAN     Object owner=CORP     Object name=PRDMJR_PR_FK_I     Cost=1     Cardinality=3     Bytes=57
    VIEW     Object owner=CORP     Object name=index$_join$_016     Cost=4     Cardinality=37     Bytes=740
    HASH JOIN                         
    INLIST ITERATOR                         
    INDEX RANGE SCAN     Object owner=CORP     Object name=PRDMNR1     Cost=3     Cardinality=37     Bytes=740
    INDEX FAST FULL SCAN     Object owner=CORP     Object name=PRDMNR_PK     Cost=4     Cardinality=37     Bytes=740
    INDEX UNIQUE SCAN     Object owner=CORP     Object name=PRODMJR_PK     Cost=0     Cardinality=1     Bytes=10
    MAT_VIEW ACCESS BY INDEX ROWID     Object owner=CORP     Object name=PRODUCTS     Cost=171     Cardinality=480     Bytes=16800
    INDEX RANGE SCAN     Object owner=CORP     Object name=PRD2     Cost=3     Cardinality=681     
    TABLE ACCESS BY INDEX ROWID     Object owner=DS     Object name=SALES_ORDER_LINE     Cost=556     Cardinality=1     Bytes=145
    BITMAP CONVERSION TO ROWIDS                         
    BITMAP INDEX SINGLE VALUE     Object owner=DS     Object name=SOL2               
    TABLE ACCESS BY INDEX ROWID     Object owner=DS     Object name=SALES_ORDER     Cost=4     Cardinality=1     Bytes=35
    INDEX RANGE SCAN     Object owner=DS     Object name=SO1     Cost=3     Cardinality=1     
    TABLE ACCESS BY INDEX ROWID     Object owner=DS     Object name=REGION_MAP     Cost=1     Cardinality=1     Bytes=4
    INDEX RANGE SCAN     Object owner=DS     Object name=REGCD     Cost=0     Cardinality=1     
    MAT_VIEW ACCESS BY INDEX ROWID     Object owner=CORP     Object name=PRODUCT_REGIONAL_INFO     Cost=2     Cardinality=1     Bytes=23
    INDEX UNIQUE SCAN     Object owner=CORP     Object name=PRDRI_PK     Cost=1     Cardinality=1     
    INDEX UNIQUE SCAN     Object owner=CORP     Object name=BI_STORE_INFO_PK     Cost=0     Cardinality=1     
    MAT_VIEW ACCESS BY INDEX ROWID     Object owner=CORP     Object name=BI_STORE_INFO     Cost=1     Cardinality=1     Bytes=22
    VIEW     Object owner=DS     cost=11     Cardinality=342     Bytes=1710
    HASH JOIN               Cost=11     Cardinality=342     Bytes=7866
    MAT_VIEW ACCESS FULL     Object owner=CORP     Object name=STORE_CORP     Cost=5     Cardinality=429     Bytes=3003
    NESTED LOOPS               Cost=5     Cardinality=478     Bytes=7648
    MAT_VIEW ACCESS FULL     Object owner=CORP     Object name=STORE_GROUP     Cost=5     Cardinality=478     Bytes=5258
    INDEX UNIQUE SCAN     Object owner=CORP     Object name=STORE_REGIONAL_INFO_PK     Cost=0     Cardinality=1     Bytes=5
    INDEX RANGE SCAN     Object owner=DS     Object name=SOS_PK     Cost=2     Cardinality=1     Bytes=19
    Regards,
    BMP

    First thing that i notice in this query is you are Using Distinct as well as Group by.
    Your group by will always give you distinct results ,then again why do you need the Distinct?
    For example
    WITH t AS
         (SELECT 'clm1' col1, 'contract1' col2,10 value
            FROM DUAL
          UNION ALL
          SELECT 'clm1' , 'contract1' ,10 value
            FROM DUAL
          UNION ALL
          SELECT 'clm1', 'contract2',10
            FROM DUAL
          UNION ALL
          SELECT 'clm2', 'contract1',10
            FROM DUAL
          UNION ALL
          SELECT 'clm3', 'contract1',10
            FROM DUAL
          UNION ALL
          SELECT 'clm4', 'contract2',10
            FROM DUAL)
    SELECT  distinct col1,col2,sum(value) from t
    group by col1,col2Is always same as
    WITH t AS
         (SELECT 'clm1' col1, 'contract1' col2,10 value
            FROM DUAL
          UNION ALL
          SELECT 'clm1' , 'contract1' ,10 value
            FROM DUAL
          UNION ALL
          SELECT 'clm1', 'contract2',10
            FROM DUAL
          UNION ALL
          SELECT 'clm2', 'contract1',10
            FROM DUAL
          UNION ALL
          SELECT 'clm3', 'contract1',10
            FROM DUAL
          UNION ALL
          SELECT 'clm4', 'contract2',10
            FROM DUAL)
    SELECT  col1,col2,sum(value) from t
    group by col1,col2And also
    AND SOL.STATUS_DATE BETWEEN '01-JUN-09' AND '30-JUN-09'It would be best to use a to_date when hard coding your dates.
    Edited by: user5495111 on Aug 6, 2009 1:32 PM

  • Need help with SQL Query with Inline View + Group by

    Hello Gurus,
    I would really appreciate your time and effort regarding this query. I have the following data set.
    Reference_No---Check_Number---Check_Date--------Description-------------------------------Invoice_Number----------Invoice_Type---Paid_Amount-----Vendor_Number
    1234567----------11223-------------- 7/5/2008----------paid for cleaning----------------------44345563------------------I-----------------*20.00*-------------19
    1234567----------11223--------------7/5/2008-----------Adjustment for bad quality---------44345563------------------A-----------------10.00------------19
    7654321----------11223--------------7/5/2008-----------Adjustment from last billing cycle-----23543556-------------------A--------------------50.00--------------19
    4653456----------11223--------------7/5/2008-----------paid for cleaning------------------------35654765--------------------I---------------------30.00-------------19
    Please Ignore '----', added it for clarity
    I am trying to write a query to aggregate paid_amount based on Reference_No, Check_Number, Payment_Date, Invoice_Number, Invoice_Type, Vendor_Number and display description with Invoice_type 'I' when there are multiple records with the same Reference_No, Check_Number, Payment_Date, Invoice_Number, Invoice_Type, Vendor_Number. When there are no multiple records I want to display the respective Description.
    The query should return the following data set
    Reference_No---Check_Number---Check_Date--------Description-------------------------------Invoice_Number----------Invoice_Type---Paid_Amount-----Vendor_Number
    1234567----------11223-------------- 7/5/2008----------paid for cleaning----------------------44345563------------------I-----------------*10.00*------------19
    7654321----------11223--------------7/5/2008-----------Adjustment from last billing cycle-----23543556-------------------A--------------------50.00--------------19
    4653456----------11223--------------7/5/2008-----------paid for cleaning------------------------35654765-------------------I---------------------30.00--------------19
    The following is my query. I am kind of lost.
    select B.Description, A.sequence_id,A.check_date, A.check_number, A.invoice_number, A.amount, A.vendor_number
    from (
    select sequence_id,check_date, check_number, invoice_number, sum(paid_amount) amount, vendor_number
    from INVOICE
    group by sequence_id,check_date, check_number, invoice_number, vendor_number
    ) A, INVOICE B
    where A.sequence_id = B.sequence_id
    Thanks,
    Nick

    It looks like it is a duplicate thread - correct me if i'm wrong in this case ->
    Need help with SQL Query with Inline View + Group by
    Regards.
    Satyaki De.

  • Need Oracle Payroll SQL Query

    Hello,
    I need Oracle Payroll SQL Query with result:
    First_name, Last_name, Payment_amount, Pay_date, Payroll_Frequency, Employement_status
    Any Help would be greatful appreciated

    You will need the following tales.
    per_all_people_f, per_all_assignments_f,pay_run_results,pay_run_result_values
    Query would e something like :
    select papf.first_name,
             papf.last_name,
             prrv.*
    From  apps.per_all_people_f papf
             apps.per_all_assignments_f paaf
             apps.pay_run_results prr,
             apps.pay_run_result_values prrv
    Where papf.person_id = paaf.person_id
    and papf.business_group_id = paaf.business_group_id
    and papf.current_employee_flag = 'Y'
    and paaf.primary_flag ='Y'
    and paaf.assignment_type = 'E'
    and trunc(sysdate) between papf.effective_start_date and papf.effective_end_date
    and trunc(sysdate) between paaf.effective_start_date and paaf.effective_end_date 
    and prr.assignment_id = paaf.assignment_id

  • Want to practice SQL queries, do I need to download SQL editor

    Hi All,
    I have a doubt..
    I want to practice SQL queries. for this, do I need to download SQL editor and Intall or If I download any Oracle version, does it will have SQL editor? please anyone answer my question.

    I'm not sure how is it related to Peoplesoft, but if you installed an Oracle client on your client machine, then you have SQL*Plus or SQL Developer.
    Nicolas.

  • Query is slow...need tuning

    Hi all
    I am using 11g database and this query is a part of a cursor declaration...Is there any scope for optimisation in this query? I appreciate your answers
    WITH
             ESN_GENEALOGY AS
            (SELECT DISTINCT G.SerialNo FROM  GENEALOGY G
                                        INNER JOIN PRODUCT P ON G.PRODUCTID=P.ID
                                        WHERE G.LASTARCHIVEDBY=I_SerialNo AND G.ACTIVE=1 AND P.PRODUCTINVENTORYTYPE=102 UNION SELECT I_SerialNo AS SerialNo FROM DUAL)
            SELECT ListParentProductID, ListCompProductNo, ListCompProductID, ListCompQuantity AS SBQty,SERIALNO,WOPRODUCTID,WORKORDERNO
            FROM
            SELECT BM.PARENTPRODUCTID ListParentProductID,BM.PRODUCTNO ListCompProductNo,BM.PRODUCTID ListCompProductID,
            BM.QUANTITY ListCompQuantity,BM.SERIALNO,SN.PRODUCTID WOPRODUCTID,SN.WORKORDERNO,I_SerialNo SN
            FROM
            (SELECT PARENTPRODUCTID,PRODUCTNO,PRODUCTID,SUM(QUANTITY) AS QUANTITY,SERIALNO
            FROM
            SELECT PARENTPRODUCTID,PRODUCTNO,PRODUCTID,QUANTITY,SERIALNO
            FROM
            SELECT
            (CASE WHEN PC1.LASTARCHIVEDBY IS NULL THEN P1.ID ELSE P3.ID END) AS  PARENTPRODUCTID,
            P2.PRODUCTNO AS PRODUCTNO,
            P2.ID AS PRODUCTID,
            SUM(C1.QUANTITY) AS QUANTITY,
            (CASE WHEN PC1.LASTARCHIVEDBY IS NULL THEN I_SerialNo ELSE CG.SERIALNO END) AS  SERIALNO
            FROM WIP_ORDER WO
            INNER JOIN PRODUCT_COMPONENT PC ON (
            PC.PRODUCTID = WO.PRODUCTID
            AND wo.wiporderno =I_WipOrderNo
            INNER JOIN COMPONENT C on C.ID = PC.COMPONENTID
            INNER JOIN PRODUCT P1 on (
            P1.ID = C.PRODUCTID
            AND C.EFFECTIVEDATE <= WO.SCHEDULEDSTARTDATE
            AND (C.DISCONTINUEDATE > WO.SCHEDULEDSTARTDATE or C.DISCONTINUEDATE is null)
            INNER JOIN PRODUCT P on WO.PRODUCTID = P.ID
            INNER JOIN PRODUCT_COMPONENT PC1 on  PC1.PRODUCTID = C.PRODUCTID
            INNER JOIN COMPONENT C1 on ( C1.ID = PC1.COMPONENTID
            AND C1.EFFECTIVEDATE <= WO.SCHEDULEDSTARTDATE
            AND (C1.DISCONTINUEDATE > WO.SCHEDULEDSTARTDATE OR C1.DISCONTINUEDATE is null)
            INNER JOIN PRODUCT P2 on P2.ID = C1.PRODUCTID
            LEFT JOIN PRODUCT P3 ON PC1.LASTARCHIVEDBY=P3.PRODUCTNO
            LEFT JOIN  (SELECT DISTINCT G.SERIALNO, G.PRODUCTID FROM  GENEALOGY G
                                        INNER JOIN PRODUCT P ON G.PRODUCTID=P.ID
                                        WHERE G.LASTARCHIVEDBY=I_SerialNo AND G.ACTIVE=1 AND P.PRODUCTINVENTORYTYPE=102) CG ON  P3.ID=CG.PRODUCTID
            WHERE  (CASE WHEN PC1.LASTARCHIVEDBY IS NULL THEN I_SerialNo ELSE CG.SERIALNO END) IS NOT NULL
            GROUP BY   (CASE WHEN PC1.LASTARCHIVEDBY IS NULL THEN P1.ID ELSE P3.ID END) , P2.PRODUCTNO, P2.ID,
                            (CASE WHEN PC1.LASTARCHIVEDBY IS NULL THEN I_SerialNo ELSE CG.SERIALNO END)
            ) set1
            UNION ALL
            SELECT PARENTPRODUCTID,PRODUCTNO,PRODUCTID,QUANTITY*(-1) AS QUANTITY,SERIALNO
            FROM
            SELECT   A.ParentProductID,
            A.ProductNO,
            A.ProductID,
            SUM(A.Quantity) AS Quantity,
            A.SERIALNO
            FROM (
            SELECT  G.PARENTPRODUCTID,
            P.PRODUCTNO,
            G.PRODUCTID,
            G.QUANTITY,
            G.ID,
            G.LASTARCHIVEDBY AS SERIALNO
            FROM GENEALOGY G
            INNER JOIN PRODUCT P ON G.PRODUCTID=P.ID
            WHERE   G.LASTARCHIVEDBY IN(SELECT SERIALNO FROM  ESN_GENEALOGY) AND G.ACTIVE=1
            UNION
            SELECT
            ParentPartID PARENTPRODUCTID,
            P.PRODUCTNO,
            ORIGINALPARTID PRODUCTID,
            QUANTITY QUANTITY,
            P.ID,
            BDH.SERIALNO AS SERIALNO
            FROM COB_T_BOM_DEVIATION_HISTORY BDH
            INNER JOIN PRODUCT p ON P.id = BDH.ORIGINALPARTID
            WHERE BDH.SERIALNO IN(SELECT SERIALNO FROM  ESN_GENEALOGY)
            UNION           
            SELECT
            ParentPartID PARENTPRODUCTID,
            P.PRODUCTNO,
            DEVIATIONPARTID PRODUCTID,
            -1 * QUANTITY QUANTITY,
            P.ID,
            BDH.SERIALNO AS SERIALNO
            FROM COB_T_BOM_DEVIATION_HISTORY BDH
            INNER JOIN PRODUCT p ON P.id = BDH.DEVIATIONPARTID
            WHERE BDH.SERIALNO IN(SELECT SERIALNO FROM  ESN_GENEALOGY)
            union
            SELECT ESB.PARENTPRODUCTID PARENTPRODUCTID,
            COMPONENTPARTNUMBER PRODUCTNO,
            COMPONENTPRODUCTID PRODUCTID,
            QUANTITY,
            ESB.ID,
            ESB.SERIALNO AS SERIALNO
            FROM COB_T_ENGINE_SHORT_BUILD ESB
            where  ESB.SERIALNO IN(SELECT SERIALNO FROM  ESN_GENEALOGY)
            ) A
            WHERE QUANTITY <> 0 AND SERIALNO IS NOT NULL
            GROUP BY  PARENTPRODUCTID, PRODUCTNO, PRODUCTID,SERIALNO   
            ) set2
            ) GROUP BY PARENTPRODUCTID,PRODUCTNO,PRODUCTID,SERIALNO
            ) BM
            LEFT JOIN  COB_T_SERIAL_NO SN  ON  BM.SERIALNO=SN.SERIALNO
            )BOM
            WHERE ListCompQuantity <> 0;

    HOW To Make TUNING request
    SQL and PL/SQL FAQ

  • Need to install SQL*Net?

    I am being told that I need something called SQL*Net to get a front end working to access a remote (like 1/2 way around the world) database. I do have the most recent Oracle client tools installed and it seems like it has the necessary networking configuration tools. However, my contact in Denmark is saying to get SQL*Net, the client tools won't cut it and I need to download a full 9i database. Is there any reference out there stating what I'll need and how I configure it?

    Generally Oracle client software is installed on Windows, if it is your case these books can be very useful.
    Client Installation Guide for 32-Bit Windows Contents / Search / Index / PDF
    Client Release Notes for 32-Bit Windows Contents / Search / / PDF
    http://otn.oracle.com/pls/db92/db92.docindex?remark=homepage
    Joel P�rez

  • Need Help in sql tuning in EXADATA environment

    I am uploadin the sql with its current explain plan, this sql in Prd database is executing in 6-10 mins and we need to improve this sql perf to 1-2 mins as the requirement from business team.
    I am giving some backgroud about this sql tuning requirement, this sql is newly developed in and currently is in UAT phase, we don't have much option for tuning code here since the sql is tool generated through COGNOS DataMart tool, options are there to look into from DBA end with plan level or creating indexes on suitible columns to reduce i/o in minimizing the rows traversing by the sql.
    Is anybody can help me out here?
    WITH "WCRS_CLAIM_DETAIL_VW5"
    AS (SELECT "WCRS_CLAIM_DETAIL_VW"."CLAIM_DETAIL_PK_ID"
    "CLAIM_DETAIL_PK_ID",
    "WCRS_CLAIM_DETAIL_VW"."CLAIM_ID" "CLAIM_ID",
    "WCRS_CLAIM_DETAIL_VW"."CURRENT_SNAPSHOT_IND"
    "CURRENT_SNAPSHOT_IND",
    "WCRS_CLAIM_DETAIL_VW"."LOSS_DT" "LOSS_DT",
    "WCRS_CLAIM_DETAIL_VW"."REGULATORY_STATE_CD"
    "REGULATORY_STATE_CD"
    FROM "CDW_DLV_IDS"."WCRS_CLAIM_DETAIL_VW" "WCRS_CLAIM_DETAIL_VW"
    WHERE "WCRS_CLAIM_DETAIL_VW"."CURRENT_SNAPSHOT_IND" = 'Y'),
    "WCRS_POLICY_DETAIL_VW7"
    AS (SELECT "WCRS_POLICY_DETAIL_VW"."CLAIM_NBR" "CLAIM_NBR",
    "WCRS_POLICY_DETAIL_VW"."CLAIM_SYMBOL_CD" "CLAIM_SYMBOL_CD",
    "WCRS_POLICY_DETAIL_VW"."CURRENT_SNAPSHOT_IND"
    "CURRENT_SNAPSHOT_IND",
    "WCRS_POLICY_DETAIL_VW"."KEY_OFFICE_CD" "KEY_OFFICE_CD",
    "WCRS_POLICY_DETAIL_VW"."POLICY_NBR" "POLICY_NBR"
    FROM "CDW_DLV_IDS"."WCRS_POLICY_DETAIL_VW" "WCRS_POLICY_DETAIL_VW"
    WHERE "WCRS_POLICY_DETAIL_VW"."CURRENT_SNAPSHOT_IND" = 'Y')
    SELECT /*+ gather_plan_statistics monitor bind_aware */
    /* ^^unique_id */
    "T0"."C0" "Account_Name",
    "T0"."C1" "Accident_State_Cd",
    "T0"."C2" "c3",
    "T0"."C3" "PPO_Name",
    "T0"."C4" "Invc_Classification_Type_Desc",
    FIRST_VALUE (
    "T0"."C5")
    OVER (
    PARTITION BY "T0"."C0",
    "T0"."C1",
    "T0"."C2",
    "T0"."C3",
    "T0"."C4",
    "T0"."C6")
    "Claim_Cnt___Distinct",
    "T0"."C7" "Invc_Control_Number",
    "T0"."C8" "Invc_Allowance_Amt",
    "T0"."C9" "Invc_Charge_Amt",
    "T0"."C10" "c10",
    "T0"."C11" "PPO_Reduction_Amt",
    "T0"."C12" "Dup_Ln_Save_Amt",
    "T0"."C13" "c13",
    "T0"."C14" "Sub_Total",
    "T0"."C15" "c15",
    "T0"."C6" "c16"
    FROM (SELECT "T1"."C0" "C0",
    "T1"."C1" "C1",
    "T1"."C2" "C2",
    "T1"."C3" "C3",
    "T1"."C4" "C4",
    "T1"."C6" "C5",
    "T1"."C5" "C6",
    "T0"."C0" "C7",
    "T1"."C7" "C8",
    "T1"."C8" "C9",
    "T1"."C9" "C10",
    "T1"."C10" "C11",
    "T1"."C11" "C12",
    "T1"."C12" "C13",
    "T1"."C13" "C14",
    "T1"."C14" "C15"
    FROM (SELECT COUNT (DISTINCT "INVC_DIM_VW"."INVC_ID") "C0"
    FROM "CDW_DLV_IDS"."WCRS_POLICY_GROUPING_VW" "WCRS_POLICY_GROUPING_VW",
    "WCRS_CLAIM_DETAIL_VW5",
    "EDW_DM"."INVC_DIM_VW" "INVC_DIM_VW",
    "EDW_DM"."PROVIDER_NETWORK_DIM_VW" "PROVIDER_NETWORK_DIM_VW",
    "EDW_DM"."INVC_ACTY_SNPSHT_FACT_VW" "INVC_ACTY_SNPSHT_FACT_VW6",
    "EDW_DM"."CURRENT_MED_INVC_RPT_DT_VW" "CURRENT_MED_INVC_RPT_DT_VW",
    "EDW_DM"."ALL_INVC_SNPSHT_FACT_VW" "ALL_INVC_SNPSHT_FACT_VW",
    "CDW_DLV_IDS"."WCRS_CURRENT_CLAIM_RPT_DT_VW" "WCRS_CURRENT_CLAIM_RPT_DT_VW",
    "CDW_DLV_IDS"."WCRS_CLAIM_FACT_VW" "WCRS_CLAIM_FACT_VW",
    "WCRS_POLICY_DETAIL_VW7",
    "EDW_DM"."INVC_CLAIM_DTL_BRDG_FACT_VW" "INVC_CLAIM_DTL_BRDG_FACT_VW"
    WHERE "INVC_DIM_VW"."INVC_DELETION_IND" <> 'Y'
    AND "INVC_DIM_VW"."INVC_CONSIDRTN_TYPE_DESC" =
    'Original'
    AND "CURRENT_MED_INVC_RPT_DT_VW"."CURRENT_MONTH_RPT_DT" =
    "ALL_INVC_SNPSHT_FACT_VW"."AS_OF_MONTH_END_DT_PK_ID"
    AND "WCRS_CURRENT_CLAIM_RPT_DT_VW"."CURRENT_CLAIM_RPT_DT" =
    "WCRS_CLAIM_FACT_VW"."CLAIM_REPORTING_DT"
    AND "WCRS_POLICY_GROUPING_VW"."ACCOUNT_NM" =
    CAST ('1ST TEAM STAFFING SERVICES, INC.' AS VARCHAR (50 CHAR))
    AND "WCRS_POLICY_DETAIL_VW7"."POLICY_NBR" =
    "WCRS_POLICY_GROUPING_VW"."POLICY_IDENTIFIER"
    AND "WCRS_POLICY_DETAIL_VW7"."CLAIM_NBR" =
    "WCRS_CLAIM_FACT_VW"."CLAIM_NBR"
    AND "WCRS_POLICY_DETAIL_VW7"."CLAIM_SYMBOL_CD" =
    "WCRS_CLAIM_FACT_VW"."CLAIM_SYMBOL_CD"
    AND "WCRS_POLICY_DETAIL_VW7"."KEY_OFFICE_CD" =
    "WCRS_CLAIM_FACT_VW"."KEY_OFFICE_CD"
    AND "WCRS_POLICY_DETAIL_VW7"."CURRENT_SNAPSHOT_IND" =
    'Y'
    AND "WCRS_CLAIM_FACT_VW"."CLAIM_DETAIL_PK_ID" =
    "WCRS_CLAIM_DETAIL_VW5"."CLAIM_DETAIL_PK_ID"
    AND "WCRS_CLAIM_DETAIL_VW5"."CURRENT_SNAPSHOT_IND" =
    'Y'
    AND "WCRS_CLAIM_FACT_VW"."CLAIM_GID" =
    "INVC_CLAIM_DTL_BRDG_FACT_VW"."CLM_GID"
    AND "INVC_CLAIM_DTL_BRDG_FACT_VW"."INVC_GID" =
    "INVC_DIM_VW"."INVC_GID"
    AND "INVC_DIM_VW"."INVC_PK_ID" =
    "INVC_ACTY_SNPSHT_FACT_VW6"."INVC_PK_ID"
    AND "ALL_INVC_SNPSHT_FACT_VW"."MONTH_END_DT_PK_ID" =
    "INVC_ACTY_SNPSHT_FACT_VW6"."MONTH_END_DT_PK_ID"
    AND "ALL_INVC_SNPSHT_FACT_VW"."INVC_GID" =
    "INVC_ACTY_SNPSHT_FACT_VW6"."INVC_GID"
    AND "PROVIDER_NETWORK_DIM_VW"."PROVIDER_NETWORK_PK_ID" =
    "INVC_ACTY_SNPSHT_FACT_VW6"."PPO_PROVIDER_NETWORK_PK_ID"
    AND "WCRS_CURRENT_CLAIM_RPT_DT_VW"."CURRENT_CLAIM_RPT_DT" =
    "WCRS_CLAIM_FACT_VW"."CLAIM_REPORTING_DT") "T0",
    ( SELECT "WCRS_POLICY_GROUPING_VW"."ACCOUNT_NM" "C0",
    "WCRS_CLAIM_DETAIL_VW5"."REGULATORY_STATE_CD" "C1",
    CASE
    WHEN "INVC_DIM_VW"."INVC_IN_OUT_OF_NETWORK_IND" =
    'Y'
    THEN
    'In - Network'
    WHEN "INVC_DIM_VW"."INVC_IN_OUT_OF_NETWORK_IND" =
    'N'
    THEN
    'Out - Network'
    ELSE
    'Others'
    END
    "C2",
    "PROVIDER_NETWORK_DIM_VW"."PROVIDER_NETWORK_NM" "C3",
    "INVC_DIM_VW"."INVC_CLASS_TYPE_DESC" "C4",
    CASE
    WHEN (EXTRACT (
    YEAR FROM ("WCRS_CLAIM_DETAIL_VW5"."LOSS_DT"))
    IS NULL)
    OR (EXTRACT (
    MONTH FROM ("WCRS_CLAIM_DETAIL_VW5"."LOSS_DT"))
    IS NULL)
    THEN
    NULL
    ELSE
    ( EXTRACT (
    YEAR FROM ("WCRS_CLAIM_DETAIL_VW5"."LOSS_DT"))
    || EXTRACT (
    MONTH FROM ("WCRS_CLAIM_DETAIL_VW5"."LOSS_DT")))
    END
    "C5",
    COUNT (DISTINCT "WCRS_CLAIM_DETAIL_VW5"."CLAIM_ID")
    "C6",
    SUM ("INVC_ACTY_SNPSHT_FACT_VW6"."INVC_ALWC_AMT") "C7",
    SUM ("INVC_ACTY_SNPSHT_FACT_VW6"."INVC_CHRGS_AMT")
    "C8",
    SUM (
    "INVC_ACTY_SNPSHT_FACT_VW6"."TOT_INVC_REVIEW_RULE_ALWC_AMT")
    "C9",
    SUM ("INVC_ACTY_SNPSHT_FACT_VW6"."INVC_PPO_REDUC_AMT")
    "C10",
    SUM ("INVC_ACTY_SNPSHT_FACT_VW6"."INVC_DUP_REDUC_AMT")
    "C11",
    SUM ("INVC_ACTY_SNPSHT_FACT_VW6"."INVC_OSR_REDUC_AMT")
    "C12",
    ( SUM (
    "INVC_ACTY_SNPSHT_FACT_VW6"."INVC_CHRGS_AMT")
    - SUM ("INVC_ACTY_SNPSHT_FACT_VW6"."INVC_ALWC_AMT"))
    - SUM (
    "INVC_ACTY_SNPSHT_FACT_VW6"."INVC_DUP_REDUC_AMT")
    "C13",
    SUM (
    "INVC_ACTY_SNPSHT_FACT_VW6"."INVC_CLNT_SPEC_REDUC_AMT")
    "C14"
    FROM "CDW_DLV_IDS"."WCRS_POLICY_GROUPING_VW" "WCRS_POLICY_GROUPING_VW",
    "WCRS_CLAIM_DETAIL_VW5",
    "EDW_DM"."INVC_DIM_VW" "INVC_DIM_VW",
    "EDW_DM"."PROVIDER_NETWORK_DIM_VW" "PROVIDER_NETWORK_DIM_VW",
    "EDW_DM"."INVC_ACTY_SNPSHT_FACT_VW" "INVC_ACTY_SNPSHT_FACT_VW6",
    "EDW_DM"."CURRENT_MED_INVC_RPT_DT_VW" "CURRENT_MED_INVC_RPT_DT_VW",
    "EDW_DM"."ALL_INVC_SNPSHT_FACT_VW" "ALL_INVC_SNPSHT_FACT_VW",
    "CDW_DLV_IDS"."WCRS_CURRENT_CLAIM_RPT_DT_VW" "WCRS_CURRENT_CLAIM_RPT_DT_VW",
    "CDW_DLV_IDS"."WCRS_CLAIM_FACT_VW" "WCRS_CLAIM_FACT_VW",
    "WCRS_POLICY_DETAIL_VW7",
    "EDW_DM"."INVC_CLAIM_DTL_BRDG_FACT_VW" "INVC_CLAIM_DTL_BRDG_FACT_VW"
    WHERE "INVC_DIM_VW"."INVC_DELETION_IND" <> 'Y'
    AND "INVC_DIM_VW"."INVC_CONSIDRTN_TYPE_DESC" =
    'Original'
    AND "CURRENT_MED_INVC_RPT_DT_VW"."CURRENT_MONTH_RPT_DT" =
    "ALL_INVC_SNPSHT_FACT_VW"."AS_OF_MONTH_END_DT_PK_ID"
    AND "WCRS_CURRENT_CLAIM_RPT_DT_VW"."CURRENT_CLAIM_RPT_DT" =
    "WCRS_CLAIM_FACT_VW"."CLAIM_REPORTING_DT"
    AND "WCRS_POLICY_GROUPING_VW"."ACCOUNT_NM" =
    CAST ('1ST TEAM STAFFING SERVICES, INC.' AS VARCHAR (50 CHAR))
    AND "WCRS_POLICY_DETAIL_VW7"."POLICY_NBR" =
    "WCRS_POLICY_GROUPING_VW"."POLICY_IDENTIFIER"
    AND "WCRS_POLICY_DETAIL_VW7"."CLAIM_NBR" =
    "WCRS_CLAIM_FACT_VW"."CLAIM_NBR"
    AND "WCRS_POLICY_DETAIL_VW7"."CLAIM_SYMBOL_CD" =
    "WCRS_CLAIM_FACT_VW"."CLAIM_SYMBOL_CD"
    AND "WCRS_POLICY_DETAIL_VW7"."KEY_OFFICE_CD" =
    "WCRS_CLAIM_FACT_VW"."KEY_OFFICE_CD"
    AND "WCRS_POLICY_DETAIL_VW7"."CURRENT_SNAPSHOT_IND" =
    'Y'
    AND "WCRS_CLAIM_FACT_VW"."CLAIM_DETAIL_PK_ID" =
    "WCRS_CLAIM_DETAIL_VW5"."CLAIM_DETAIL_PK_ID"
    AND "WCRS_CLAIM_DETAIL_VW5"."CURRENT_SNAPSHOT_IND" =
    'Y'
    AND "WCRS_CLAIM_FACT_VW"."CLAIM_GID" =
    "INVC_CLAIM_DTL_BRDG_FACT_VW"."CLM_GID"
    AND "INVC_CLAIM_DTL_BRDG_FACT_VW"."INVC_GID" =
    "INVC_DIM_VW"."INVC_GID"
    AND "INVC_DIM_VW"."INVC_PK_ID" =
    "INVC_ACTY_SNPSHT_FACT_VW6"."INVC_PK_ID"
    AND "ALL_INVC_SNPSHT_FACT_VW"."MONTH_END_DT_PK_ID" =
    "INVC_ACTY_SNPSHT_FACT_VW6"."MONTH_END_DT_PK_ID"
    AND "ALL_INVC_SNPSHT_FACT_VW"."INVC_GID" =
    "INVC_ACTY_SNPSHT_FACT_VW6"."INVC_GID"
    AND "PROVIDER_NETWORK_DIM_VW"."PROVIDER_NETWORK_PK_ID" =
    "INVC_ACTY_SNPSHT_FACT_VW6"."PPO_PROVIDER_NETWORK_PK_ID"
    AND "WCRS_CURRENT_CLAIM_RPT_DT_VW"."CURRENT_CLAIM_RPT_DT" =
    "WCRS_CLAIM_FACT_VW"."CLAIM_REPORTING_DT"
    GROUP BY "WCRS_POLICY_GROUPING_VW"."ACCOUNT_NM",
    "WCRS_CLAIM_DETAIL_VW5"."REGULATORY_STATE_CD",
    CASE
    WHEN "INVC_DIM_VW"."INVC_IN_OUT_OF_NETWORK_IND" =
    'Y'
    THEN
    'In - Network'
    WHEN "INVC_DIM_VW"."INVC_IN_OUT_OF_NETWORK_IND" =
    'N'
    THEN
    'Out - Network'
    ELSE
    'Others'
    END,
    "PROVIDER_NETWORK_DIM_VW"."PROVIDER_NETWORK_NM",
    "INVC_DIM_VW"."INVC_CLASS_TYPE_DESC",
    CASE
    WHEN (EXTRACT (
    YEAR FROM ("WCRS_CLAIM_DETAIL_VW5"."LOSS_DT"))
    IS NULL)
    OR (EXTRACT (
    MONTH FROM ("WCRS_CLAIM_DETAIL_VW5"."LOSS_DT"))
    IS NULL)
    THEN
    NULL
    ELSE
    ( EXTRACT (
    YEAR FROM ("WCRS_CLAIM_DETAIL_VW5"."LOSS_DT"))
    || EXTRACT (
    MONTH FROM ("WCRS_CLAIM_DETAIL_VW5"."LOSS_DT")))
    END) "T1") "T0"
    ORDER BY "Account_Name" ASC NULLS LAST,
    "Accident_State_Cd" ASC NULLS LAST,
    "c3" ASC NULLS LAST,
    "PPO_Name" ASC NULLS LAST,
    "Invc_Classification_Type_Desc" ASC NULLS LAST

    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
    | 0 | SELECT STATEMENT | | 1 | 838 | 1079K (1)| 00:00:34 | | |
    | 1 | TEMP TABLE TRANSFORMATION | | | | | | | |
    | 2 | PX COORDINATOR | | | | | | | |
    | 3 | PX SEND QC (RANDOM) | :TQ10000 | 10M| 317M| 848K (1)| 00:00:27 | | |
    | 4 | LOAD AS SELECT | SYS_TEMP_0FD9D677A_286AAA2E | | | | | | |
    | 5 | PX BLOCK ITERATOR | | 10M| 317M| 848K (1)| 00:00:27 | | |
    |* 6 | TABLE ACCESS STORAGE FULL | WCRS_CLAIM_DETAIL | 10M| 317M| 848K (1)| 00:00:27 | | |
    | 7 | PX COORDINATOR | | | | | | | |
    | 8 | PX SEND QC (RANDOM) | :TQ20000 | 10M| 268M| 44875 (1)| 00:00:02 | | |
    | 9 | LOAD AS SELECT | SYS_TEMP_0FD9D677B_286AAA2E | | | | | | |
    | 10 | PX BLOCK ITERATOR | | 10M| 268M| 44875 (1)| 00:00:02 | | |
    |* 11 | TABLE ACCESS STORAGE FULL | WCRS_POLICY_DETAIL | 10M| 268M| 44875 (1)| 00:00:02 | | |
    | 12 | PX COORDINATOR | | | | | | | |
    | 13 | PX SEND QC (ORDER) | :TQ40017 | 1 | 838 | 186K (2)| 00:00:06 | | |
    | 14 | WINDOW SORT | | 1 | 838 | 186K (2)| 00:00:06 | | |
    | 15 | PX RECEIVE | | 1 | 838 | 186K (2)| 00:00:06 | | |
    | 16 | PX SEND RANGE | :TQ40016 | 1 | 838 | 186K (2)| 00:00:06 | | |
    | 17 | NESTED LOOPS | | 1 | 838 | 186K (2)| 00:00:06 | | |
    | 18 | BUFFER SORT | | | | | | | |
    | 19 | PX RECEIVE | | | | | | | |
    | 20 | PX SEND BROADCAST | :TQ40001 | | | | | | |
    | 21 | VIEW | | 1 | 13 | 93216 (2)| 00:00:03 | | |
    | 22 | SORT GROUP BY | | 1 | 393 | | | | |
    | 23 | PX COORDINATOR | | | | | | | |
    | 24 | PX SEND QC (RANDOM) | :TQ30015 | 1 | 393 | | | | |
    | 25 | SORT GROUP BY | | 1 | 393 | | | | |
    | 26 | PX RECEIVE | | 1 | 393 | | | | |
    | 27 | PX SEND HASH | :TQ30014 | 1 | 393 | | | | |
    | 28 | SORT GROUP BY | | 1 | 393 | | | | |
    |* 29 | HASH JOIN ANTI | | 1 | 393 | 93216 (2)| 00:00:03 | | |
    | 30 | PX RECEIVE | | 1 | 376 | 85197 (2)| 00:00:03 | | |
    | 31 | PX SEND HASH | :TQ30012 | 1 | 376 | 85197 (2)| 00:00:03 | | |
    | 32 | BUFFER SORT | | 1 | 838 | | | | |
    | 33 | NESTED LOOPS | | 1 | 376 | 85197 (2)| 00:00:03 | | |
    | 34 | NESTED LOOPS | | 1 | 358 | 85197 (2)| 00:00:03 | | |
    | 35 | NESTED LOOPS | | 1 | 348 | 85197 (2)| 00:00:03 | | |
    |* 36 | HASH JOIN ANTI | | 1 | 316 | 85179 (2)| 00:00:03 | | |
    | 37 | PX RECEIVE | | 4 | 1156 | 77161 (2)| 00:00:03 | | |
    | 38 | PX SEND HASH | :TQ30010 | 4 | 1156 | 77161 (2)| 00:00:03 | | |
    |* 39 | HASH JOIN ANTI BUFFERED | | 4 | 1156 | 77161 (2)| 00:00:03 | | |
    | 40 | PX RECEIVE | | 371 | 94605 | 69142 (2)| 00:00:03 | | |
    | 41 | PX SEND HASH | :TQ30008 | 371 | 94605 | 69142 (2)| 00:00:03 | | |
    |* 42 | HASH JOIN | | 371 | 94605 | 69142 (2)| 00:00:03 | | |
    | 43 | PX RECEIVE | | 350 | 77000 | 36642 (1)| 00:00:02 | | |
    | 44 | PX SEND BROADCAST | :TQ30007 | 350 | 77000 | 36642 (1)| 00:00:02 | | |
    |* 45 | HASH JOIN | | 350 | 77000 | 36642 (1)| 00:00:02 | | |
    | 46 | PX RECEIVE | | 140 | 25200 | 28624 (1)| 00:00:01 | | |
    | 47 | PX SEND BROADCAST | :TQ30006 | 140 | 25200 | 28624 (1)| 00:00:01 | | |
    |* 48 | HASH JOIN | | 140 | 25200 | 28624 (1)| 00:00:01 | | |
    | 49 | PX RECEIVE | | 140 | 22820 | 25169 (1)| 00:00:01 | | |
    | 50 | PX SEND BROADCAST | :TQ30005 | 140 | 22820 | 25169 (1)| 00:00:01 | | |
    |* 51 | HASH JOIN BUFFERED | | 140 | 22820 | 25169 (1)| 00:00:01 | | |
    | 52 | BUFFER SORT | | | | | | | |
    | 53 | PX RECEIVE | | 9 | 306 | 5 (0)| 00:00:01 | | |
    | 54 | T PX SEND BROADCAS | :TQ30000 | 9 | 306 | 5 (0)| 00:00:01 | | |
    | 55 | INDEX ROWID TABLE ACCESS BY | WCRS_POLICY_GROUPING | 9 | 306 | 5 (0)| 00:00:01 | | |
    |* 56 | AN INDEX RANGE SC | SUK3 | 9 | | 1 (0)| 00:00:01 | | |
    |* 57 | HASH JOIN | | 9699K| 1193M| 25149 (1)| 00:00:01 | | |
    | 58 | PX RECEIVE | | 9699K| 434M| 22205 (1)| 00:00:01 | | |
    | 59 | PX SEND HASH | :TQ30003 | 9699K| 434M| 22205 (1)| 00:00:01 | | |
    | 60 | NESTED LOOPS | | 9699K| 434M| 22205 (1)| 00:00:01 | | |
    | 61 | BUFFER SORT | | | | | | | |
    | 62 | PX RECEIVE | | | | | | | |
    | 63 | DCAST PX SEND BROA | :TQ30002 | | | | | | |
    | 64 | CARTESIAN MERGE JOIN | | 1 | 14 | 13 (0)| 00:00:01 | | |
    | 65 | TERATOR PX BLOCK I | | 1 | 8 | 10 (0)| 00:00:01 | | |
    | 66 | ESS STORAGE FULL TABLE ACC | CURRENT_MED_INVC_RPT_DT | 1 | 8 | 10 (0)| 00:00:01 | | |
    | 67 | T BUFFER SOR | | 1 | 6 | 3 (0)| 00:00:01 | | |
    | 68 | E PX RECEIV | | 1 | 6 | 2 (0)| 00:00:01 | | |
    | 69 | BROADCAST PX SEND | :TQ30001 | 1 | 6 | 2 (0)| 00:00:01 | | |
    | 70 | K ITERATOR PX BLOC | | 1 | 6 | 2 (0)| 00:00:01 | | |
    | 71 | ACCESS STORAGE FULL TABLE | WCRS_CURRENT_CLAIM_RPT_DT | 1 | 6 | 2 (0)| 00:00:01 | | |
    | 72 | TOR PX BLOCK ITERA | | 9699K| 305M| 22192 (1)| 00:00:01 | KEY | KEY |
    |* 73 | STORAGE FULL TABLE ACCESS | WCRS_CURRENT_CLAIM_FACT | 9699K| 305M| 22192 (1)| 00:00:01 | KEY | KEY |
    | 74 | PX RECEIVE | | 10M| 785M| 2907 (2)| 00:00:01 | | |
    | 75 | PX SEND HASH | :TQ30004 | 10M| 785M| 2907 (2)| 00:00:01 | | |
    |* 76 | VIEW | | 10M| 785M| 2907 (2)| 00:00:01 | | |
    | 77 | TOR PX BLOCK ITERA | | 10M| 268M| 2907 (2)| 00:00:01 | | |
    | 78 | STORAGE FULL TABLE ACCESS | SYS_TEMP_0FD9D677B_286AAA2E | 10M| 268M| 2907 (2)| 00:00:01 | | |
    |* 79 | VIEW | | 10M| 168M| 3439 (2)| 00:00:01 | | |
    | 80 | PX BLOCK ITERATOR | | 10M| 317M| 3439 (2)| 00:00:01 | | |
    | 81 | E FULL TABLE ACCESS STORAG | SYS_TEMP_0FD9D677A_286AAA2E | 10M| 317M| 3439 (2)| 00:00:01 | | |
    | 82 | PX BLOCK ITERATOR | | 15M| 599M| 7994 (1)| 00:00:01 | | |
    | 83 | LL TABLE ACCESS STORAGE FU | INVC_CLAIM_DTL_BRDG_FACT | 15M| 599M| 7994 (1)| 00:00:01 | | |
    | 84 | PX BLOCK ITERATOR | | 15M| 521M| 32477 (2)| 00:00:02 | | |
    |* 85 | TABLE ACCESS STORAGE FULL | INVC_DIM | 15M| 521M| 32477 (2)| 00:00:02 | | |
    | 86 | PX RECEIVE | | 15M| 509M| 7994 (1)| 00:00:01 | | |
    | 87 | PX SEND HASH | :TQ30009 | 15M| 509M| 7994 (1)| 00:00:01 | | |
    | 88 | PX BLOCK ITERATOR | | 15M| 509M| 7994 (1)| 00:00:01 | | |
    | 89 | TABLE ACCESS STORAGE FULL | INVC_CLAIM_DTL_BRDG_FACT | 15M| 509M| 7994 (1)| 00:00:01 | | |
    | 90 | PX RECEIVE | | 15M| 404M| 7994 (1)| 00:00:01 | | |
    | 91 | PX SEND HASH | :TQ30011 | 15M| 404M| 7994 (1)| 00:00:01 | | |
    | 92 | PX BLOCK ITERATOR | | 15M| 404M| 7994 (1)| 00:00:01 | | |
    | 93 | TABLE ACCESS STORAGE FULL | INVC_CLAIM_DTL_BRDG_FACT | 15M| 404M| 7994 (1)| 00:00:01 | | |
    | 94 | TABLE ACCESS BY INDEX ROWID | INVC_ACTY_SNPSHT_FACT | 1 | 32 | 18 (0)| 00:00:01 | | |
    |* 95 | INDEX RANGE SCAN | IFK_XPKINVOICE_ACTIVITY_SNAPSH | 1 | | 1 (0)| 00:00:01 | | |
    |* 96 | INDEX UNIQUE SCAN | IFK_XPKPROVIDER_NETWORK_DIM | 1 | 10 | 0 (0)| 00:00:01 | | |
    |* 97 | INDEX RANGE SCAN | IFK_XPKALL_INVC_SNPSHT_FACT | 1 | 18 | 1 (0)| 00:00:01 | | |
    | 98 | PX RECEIVE | | 15M| 254M| 7994 (1)| 00:00:01 | | |
    | 99 | PX SEND HASH | :TQ30013 | 15M| 254M| 7994 (1)| 00:00:01 | | |
    | 100 | PX BLOCK ITERATOR | | 15M| 254M| 7994 (1)| 00:00:01 | | |
    | 101 | TABLE ACCESS STORAGE FULL | INVC_CLAIM_DTL_BRDG_FACT | 15M| 254M| 7994 (1)| 00:00:01 | | |
    | 102 | VIEW | | 1 | 825 | | | | |
    | 103 | SORT GROUP BY | | 1 | 430 | 93216 (2)| 00:00:03 | | |
    | 104 | BUFFER SORT | | | | | | | |
    | 105 | PX RECEIVE | | 1 | 430 | 93216 (2)| 00:00:03 | | |
    | 106 | PX SEND HASH | :TQ40015 | 1 | 430 | 93216 (2)| 00:00:03 | | |
    |*107 | HASH JOIN ANTI BUFFERED | | 1 | 430 | 93216 (2)| 00:00:03 | | |
    | 108 | PX RECEIVE | | 1 | 413 | 85198 (2)| 00:00:03 | | |
    | 109 | PX SEND HASH | :TQ40013 | 1 | 413 | 85198 (2)| 00:00:03 | | |
    | 110 | BUFFER SORT | | 1 | 838 | | | | |
    | 111 | NESTED LOOPS | | 1 | 413 | 85198 (2)| 00:00:03 | | |
    | 112 | NESTED LOOPS | | 1 | 395 | 85197 (2)| 00:00:03 | | |
    | 113 | NESTED LOOPS | | 1 | 369 | 85197 (2)| 00:00:03 | | |
    |*114 | HASH JOIN ANTI | | 1 | 311 | 85179 (2)| 00:00:03 | | |
    | 115 | PX RECEIVE | | 4 | 1136 | 77161 (2)| 00:00:03 | | |
    | 116 | PX SEND HASH | :TQ40011 | 4 | 1136 | 77161 (2)| 00:00:03 | | |
    |*117 | HASH JOIN ANTI BUFFERED | | 4 | 1136 | 77161 (2)| 00:00:03 | | |
    | 118 | PX RECEIVE | | 371 | 92750 | 69143 (2)| 00:00:03 | | |
    | 119 | PX SEND HASH | :TQ40009 | 371 | 92750 | 69143 (2)| 00:00:03 | | |
    |*120 | HASH JOIN | | 371 | 92750 | 69143 (2)| 00:00:03 | | |
    | 121 | PX RECEIVE | | 350 | 72450 | 36642 (1)| 00:00:02 | | |
    | 122 | PX SEND BROADCAST | :TQ40008 | 350 | 72450 | 36642 (1)| 00:00:02 | | |
    |*123 | HASH JOIN | | 350 | 72450 | 36642 (1)| 00:00:02 | | |
    | 124 | PX RECEIVE | | 140 | 23380 | 28624 (1)| 00:00:01 | | |
    | 125 | PX SEND BROADCAST | :TQ40007 | 140 | 23380 | 28624 (1)| 00:00:01 | | |
    |*126 | HASH JOIN | | 140 | 23380 | 28624 (1)| 00:00:01 | | |
    | 127 | PX RECEIVE | | 140 | 15540 | 25169 (1)| 00:00:01 | | |
    | 128 | PX SEND BROADCAST | :TQ40006 | 140 | 15540 | 25169 (1)| 00:00:01 | | |
    |*129 | HASH JOIN BUFFERED | | 140 | 15540 | 25169 (1)| 00:00:01 | | |
    | 130 | BUFFER SORT | | | | | | | |
    | 131 | PX RECEIVE | | 9 | 306 | 5 (0)| 00:00:01 | | |
    | 132 | PX SEND BROADCAST | :TQ40000 | 9 | 306 | 5 (0)| 00:00:01 | | |
    | 133 | ROWID TABLE ACCESS BY INDEX | WCRS_POLICY_GROUPING | 9 | 306 | 5 (0)| 00:00:01 | | |
    |*134 | INDEX RANGE SCAN | SUK3 | 9 | | 1 (0)| 00:00:01 | | |
    |*135 | HASH JOIN | | 9699K| 712M| 25149 (1)| 00:00:01 | | |
    | 136 | PX RECEIVE | | 10M| 287M| 2907 (2)| 00:00:01 | | |
    | 137 | PX SEND HASH | :TQ40004 | 10M| 287M| 2907 (2)| 00:00:01 | | |
    |*138 | VIEW | | 10M| 287M| 2907 (2)| 00:00:01 | | |
    | 139 | PX BLOCK ITERATOR | | 10M| 268M| 2907 (2)| 00:00:01 | | |
    | 140 | E FULL TABLE ACCESS STORAG | SYS_TEMP_0FD9D677B_286AAA2E | 10M| 268M| 2907 (2)| 00:00:01 | | |
    | 141 | PX RECEIVE | | 9699K| 434M| 22205 (1)| 00:00:01 | | |
    | 142 | PX SEND HASH | :TQ40005 | 9699K| 434M| 22205 (1)| 00:00:01 | | |
    | 143 | NESTED LOOPS | | 9699K| 434M| 22205 (1)| 00:00:01 | | |
    | 144 | BUFFER SORT | | | | | | | |
    | 145 | PX RECEIVE | | | | | | | |
    | 146 | PX SEND BROADCAST | :TQ40003 | | | | | | |
    | 147 | IAN MERGE JOIN CARTES | | 1 | 14 | 13 (0)| 00:00:01 | | |
    | 148 | R PX BLOCK ITERATO | | 1 | 8 | 10 (0)| 00:00:01 | | |
    | 149 | ORAGE FULL TABLE ACCESS ST | CURRENT_MED_INVC_RPT_DT | 1 | 8 | 10 (0)| 00:00:01 | | |
    | 150 | BUFFER SORT | | 1 | 6 | 3 (0)| 00:00:01 | | |
    | 151 | PX RECEIVE | | 1 | 6 | 2 (0)| 00:00:01 | | |
    | 152 | AST PX SEND BROADC | :TQ40002 | 1 | 6 | 2 (0)| 00:00:01 | | |
    | 153 | ATOR PX BLOCK ITER | | 1 | 6 | 2 (0)| 00:00:01 | | |
    | 154 | STORAGE FULL TABLE ACCESS | WCRS_CURRENT_CLAIM_RPT_DT | 1 | 6 | 2 (0)| 00:00:01 | | |
    | 155 | PX BLOCK ITERATOR | | 9699K| 305M| 22192 (1)| 00:00:01 | KEY | KEY |
    |*156 | E FULL TABLE ACCESS STORAG | WCRS_CURRENT_CLAIM_FACT | 9699K| 305M| 22192 (1)| 00:00:01 | KEY | KEY |
    |*157 | VIEW | | 10M| 555M| 3439 (2)| 00:00:01 | | |
    | 158 | PX BLOCK ITERATOR | | 10M| 317M| 3439 (2)| 00:00:01 | | |
    | 159 | TABLE ACCESS STORAGE FULL | SYS_TEMP_0FD9D677A_286AAA2E | 10M| 317M| 3439 (2)| 00:00:01 | | |
    | 160 | PX BLOCK ITERATOR | | 15M| 599M| 7994 (1)| 00:00:01 | | |
    | 161 | TABLE ACCESS STORAGE FULL | INVC_CLAIM_DTL_BRDG_FACT | 15M| 599M| 7994 (1)| 00:00:01 | | |
    | 162 | PX BLOCK ITERATOR | | 15M| 641M| 32477 (2)| 00:00:02 | | |
    |*163 | TABLE ACCESS STORAGE FULL | INVC_DIM | 15M| 641M| 32477 (2)| 00:00:02 | | |
    | 164 | PX RECEIVE | | 15M| 509M| 7994 (1)| 00:00:01 | | |
    | 165 | PX SEND HASH | :TQ40010 | 15M| 509M| 7994 (1)| 00:00:01 | | |
    | 166 | PX BLOCK ITERATOR | | 15M| 509M| 7994 (1)| 00:00:01 | | |
    | 167 | TABLE ACCESS STORAGE FULL | INVC_CLAIM_DTL_BRDG_FACT | 15M| 509M| 7994 (1)| 00:00:01 | | |
    | 168 | PX RECEIVE | | 15M| 404M| 7994 (1)| 00:00:01 | | |
    | 169 | PX SEND HASH | :TQ40012 | 15M| 404M| 7994 (1)| 00:00:01 | | |
    | 170 | PX BLOCK ITERATOR | | 15M| 404M| 7994 (1)| 00:00:01 | | |
    | 171 | TABLE ACCESS STORAGE FULL | INVC_CLAIM_DTL_BRDG_FACT | 15M| 404M| 7994 (1)| 00:00:01 | | |
    | 172 | TABLE ACCESS BY INDEX ROWID | INVC_ACTY_SNPSHT_FACT | 1 | 58 | 18 (0)| 00:00:01 | | |
    |*173 | INDEX RANGE SCAN | IFK_XPKINVOICE_ACTIVITY_SNAPSH | 1 | | 1 (0)| 00:00:01 | | |
    | 174 | TABLE ACCESS BY INDEX ROWID | PROVIDER_NETWORK_DIM | 1 | 26 | 0 (0)| 00:00:01 | | |
    |*175 | INDEX UNIQUE SCAN | IFK_XPKPROVIDER_NETWORK_DIM | 1 | | 0 (0)| 00:00:01 | | |
    |*176 | INDEX RANGE SCAN | IFK_XPKALL_INVC_SNPSHT_FACT | 1 | 18 | 1 (0)| 00:00:01 | | |
    | 177 | PX RECEIVE | | 15M| 254M| 7994 (1)| 00:00:01 | | |
    | 178 | PX SEND HASH | :TQ40014 | 15M| 254M| 7994 (1)| 00:00:01 | | |
    | 179 | PX BLOCK ITERATOR | | 15M| 254M| 7994 (1)| 00:00:01 | | |
    | 180 | TABLE ACCESS STORAGE FULL | INVC_CLAIM_DTL_BRDG_FACT | 15M| 254M| 7994 (1)| 00:00:01 | | |
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------

  • Needs ur help in tuning a sql

    Hi,
    I have a partioned table.I am spooling output of an sql which joins the partioned table and another referece table of minimal data.
    each partion except 3 contains 5 milllion records on average
    othere 3 partitions has 6.6 million records (each one).
    The sql takes 3 mins if it is triggered against the partions with 5 million but
    the same sql is taing 8 hrs if it is triggered against the partion with 6.5 million.
    Please help me how can avoid this performace issue
    Below are IO statistics for the two cases
    (partion with 6.5 million)
    BLOCK_GETS=9
    CONSISTENT_GETS=89533761
    PHYSICAL_READS=15746
    (partion with 5.0 million)
    BLOCK_GETS=8
    CONSISTENT_GETS=1215131
    PHYSICAL_READS=28848

    Hi,
    post the select for the 2 SQL's and the EXPLAIN for each.

  • Long running SQL needs tuning

    We've an SQL procedure that hangs after running for hours. We've identified the SQL that's causing the bottleneck. Pl. find screnshot of the explain plan below.
    Pls. suggest me to improve the performance of this query.
    ===============================================
      SELECT COUNT(DISTINCT reat_elg.prd_hld_id) 
          FROM tl_w_prd_hld prdhld , tl_w_prd_hld_role prdhldrl , tl_w_phlc_cnt_stat prdhldco , tl_w_reat_elg reat_elg
         WHERE reat_elg.prd_hld_id = prdhld.prd_hld_id AND
               prdhld.prd_hld_id = prdhldrl.prd_hld_id AND
               prdhld.prd_hld_id = prdhldco.prd_hld_id AND
               reat_elg.prd_hld_id != '-1' AND
               reat_elg.eligible_ind = 'Y' AND
               prdhldrl.eff_end_date IS NULL AND
               prdhldrl.hms_legown_ind = 'Y' AND
               prdhldco.legown_issue_ind = 'N' AND
               prdhld.jntown_type_ind='N' AND
               reat_elg.prd_hld_id IN
                        (SELECT distinct phr2.prd_hld_id
                          FROM tl_w_prd_hld_role phr2, tl_w_phlc_cnt_stat ph_loi
                          WHERE ph_loi.prd_hld_id=ph_loi.prd_hld_id  AND
                                phr2.prd_hld_id = reat_elg.prd_hld_id AND
                                phr2.eff_end_date IS NULL AND
                                phr2.hms_legown_ind = 'Y' AND
                                (ph_loi.create_source,phr2.prd_hld_id) IN 
                                 (SELECT  DISTINCT                              
                                          (CASE
                                           WHEN (ccntbl_ind='Y' OR ce_legown_issue_ind='N' OR sfc_cntbl_ind='' OR sfc_legown_issue_ind='') AND       ce_hms_legown_ind='Y' THEN ce_create_source
                                           WHEN ccntbl_ind='Y' AND ce_legown_issue_ind='N' AND ce_hms_legown_ind='Y' THEN ce_create_source
                                           WHEN ((ccntbl_ind='N' OR ce_legown_issue_ind='Y') AND ce_hms_legown_ind='Y' ) AND (sfc_cntbl_ind='Y' AND sfc_legown_issue_ind='N'  AND SFC_hms_legown_IND='Y')    THEN  sfc_create_source
                                           WHEN ((ccntbl_ind='N' OR ce_legown_issue_ind='Y') AND ce_hms_legown_ind='Y' ) AND ((sfc_cntbl_ind='N' AND sfc_legown_issue_ind='Y')  AND SFC_hms_legown_IND='Y')    THEN  sfc_create_source
                                           WHEN ((ccntbl_ind='N' OR ce_legown_issue_ind='Y') AND ce_hms_legown_ind='Y' ) AND (sfc_cntbl_ind='Y' AND sfc_legown_issue_ind='N'  AND SFC_hms_legown_IND='N')    THEN  ce_create_source
                                           WHEN ((ccntbl_ind='N' OR ce_legown_issue_ind='Y') AND ce_hms_legown_ind='Y' ) AND ((sfc_cntbl_ind='N' AND sfc_legown_issue_ind='Y')  AND SFC_hms_legown_IND='N')    THEN  ce_create_source
                                           END
                                          (CASE
                                           WHEN (ccntbl_ind='Y' OR ce_legown_issue_ind='N' OR sfc_cntbl_ind='' OR sfc_legown_issue_ind='') AND       ce_hms_legown_ind='Y' THEN CE_prd_hld_ID
                                           WHEN ccntbl_ind='Y' AND ce_legown_issue_ind='N' AND ce_hms_legown_ind='Y' THEN ce_create_source
                                           WHEN ((ccntbl_ind='N' OR ce_legown_issue_ind='Y') AND ce_hms_legown_ind='Y' ) AND (sfc_cntbl_ind='Y' AND sfc_legown_issue_ind='N'  AND SFC_hms_legown_IND='Y')    THEN  sfc_prd_hld_id
                                           WHEN ((ccntbl_ind='N' OR ce_legown_issue_ind='Y') AND ce_hms_legown_ind='Y' ) AND ((sfc_cntbl_ind='N' AND sfc_legown_issue_ind='Y')  AND SFC_hms_legown_IND='Y')    THEN  sfc_prd_hld_id
                                           WHEN ((ccntbl_ind='N' OR ce_legown_issue_ind='Y') AND ce_hms_legown_ind='Y' ) AND (sfc_cntbl_ind='Y' AND sfc_legown_issue_ind='N'  AND SFC_hms_legown_IND='N')    THEN  ce_prd_hld_id
                                           WHEN ((ccntbl_ind='N' OR ce_legown_issue_ind='Y') AND ce_hms_legown_ind='Y' ) AND ((sfc_cntbl_ind='N' AND sfc_legown_issue_ind='Y')  AND SFC_hms_legown_IND='N')    THEN  ce_prd_hld_id
                                           END
                                          FROM
                                            SELECT
                                            cnteng.prd_hld_id ce_prd_hld_id,
                                            cnteng.cntbl_ind ccntbl_ind,
                                            cnteng.legown_issue_ind ce_legown_issue_ind,
                                            cnteng.hms_legown_ind ce_hms_legown_ind,
                                            cnteng.create_source ce_create_source,
                                            slsfrc.prd_hld_id sfc_prd_hld_id,
                                            slsfrc.cntbl_ind sfc_cntbl_ind,
                                            slsfrc.legown_issue_ind sfc_legown_issue_ind,     
                                            slsfrc.hms_legown_ind     sfc_hms_legown_ind,
                                            slsfrc.create_source sfc_create_source
                                            FROM
                                            (SELECT ph_loi.prd_hld_id,ph_loi.cntbl_ind,ph_loi.legown_issue_ind,prdhldrl.hms_legown_ind,ph_loi.create_source FROM tl_w_phlc_cnt_stat ph_loi,tl_w_prd_hld_role prdhldrl
                                            WHERE
                                            ph_loi.prd_hld_id=prdhldrl.prd_hld_id
                                            AND ph_loi.create_source!='slsfrc'
                                            )cnteng,                            
                                            SELECT ph_loi.prd_hld_id,ph_loi.cntbl_ind,ph_loi.legown_issue_ind,prdhldrl.hms_legown_ind,ph_loi.create_source FROM tl_w_phlc_cnt_stat ph_loi,tl_w_prd_hld_role prdhldrl
                                            WHERE
                                            ph_loi.prd_hld_id=prdhldrl.prd_hld_id
                                            AND ph_loi.CREATE_SOURCE='slsfrc'
                                            )slsfrc where cnteng.prd_hld_id=slsfrc.prd_hld_id
                                             GROUP BY phr2.prd_hld_id
                                             HAVING COUNT(*) > 1
                     ================================================
    Explain plan
    SQL> select * from table(dbms_xplan.display);
    Message was edited by:
    user604968

    Dear user604968
    (Why not give your profile a name?)
    Your explain plan has been removed - which doesn't help - but here's a couple of things
    1) the use of DISTINCT in each of the main query, subquery and sub-sub-query fills me with suspicion. The complexity of the query makes me think that the data model is either misunderstood or (more likely) poorly designed
    2) the outermost subquery is almost certainly incorrectly correlated with the outer query:
        WHERE ph_loi.prd_hld_id=ph_loi.prd_hld_id why compare a column to itself? Presumably this should be something like:
        WHERE ph_loi.prd_hld_id=phr2.prd_hld_id Good luck with puzzling it out...
    Regards Nigel

  • Need tuning help on sql query

    In below query, table A has 200,000 records and table B has 10 million records. There are no indexes on this table at this point, how can i improve the query perfromance ?
    select *
    from A, B
    where A.VARCHAR = SUBSTR(B.VARCHAR, 1, 6)
    and TO_DATE(A.DT_Varchar, 'YYYYMMDD') = TO_DATE(B.DT_Varchar, 'DD Mon YYYY')
    A.VARCHAR & A.DT_Varchar form the uniqueness in Table A
    B.VARCHAR & B.DT_Varchar form the uniqueness in Table B

    Hi,
    Krishna4Oracle wrote:
    In below query, table A has 200,000 records and table B has 10 million records. There are no indexes on this table at this point, how can i improve the query perfromance ?
    select *
    from A, B
    where A.VARCHAR = SUBSTR(B.VARCHAR, 1, 6)
    and TO_DATE(A.DT_Varchar, 'YYYYMMDD') = TO_DATE(B.DT_Varchar, 'DD Mon YYYY')
    A.VARCHAR & A.DT_Varchar form the uniqueness in Table A
    B.VARCHAR & B.DT_Varchar form the uniqueness in Table BDo you need all columns from both tables?
    You might want to consider using explicit joins instead, i.e
    select a.column1, b.column2 from a
    inner join b on
    a.varchar = substr(b.varchar,1,6) and
    TO_DATE(A.DT_Varchar, 'YYYYMMDD') = TO_DATE(B.DT_Varchar, 'DD Mon YYYY')HtH
    Johan

  • Need help in SQL tuning

    I created apackage to
    1) Explode BOM model based on Demand data
    2) Save into temp table
    3) Adding additional info from original records
    This involves 400,000 + records and before this it tooks around 3-4 hours
    but now it seems running forever. Please help me to tune this
    CREATE OR REPLACE PACKAGE ZZ_SCHEDULED_BOMEXPLODE
    AS
    PROCEDURE main (
    errbuf OUT VARCHAR2,
    retcode OUT VARCHAR2--,
    END ZZ_SCHEDULED_BOMEXPLODE;
    CREATE OR REPLACE PACKAGE BODY ZZ_SCHEDULED_BOMEXPLODE
    AS
    PROCEDURE main (
    errbuf OUT VARCHAR2,
    retcode OUT VARCHAR2--,
    IS     
    v_explodemodel      VARCHAR2(30);
    v_explodemodel_id NUMBER;
    v_plan_id          NUMBER;
    v_qty_rate          NUMBER;
    v_mrp_date     DATE;
    v_comp_id          NUMBER;
    v_item_cost     NUMBER;
    l_assembly_item_id      NUMBER;
    l_organization_id      NUMBER      := 101;
    l_group_id           NUMBER      := -1111;
    l_session_id     NUMBER      := -1111;
    l_levels_to_explode      NUMBER     := 60;
    l_revision_date      DATE          := null;
    l_err_msg           VARCHAR2(80);
    l_err_code      NUMBER;
    CURSOR c_isp_models IS
    SELECT DISTINCT mov.ITEM_SEGMENTS,mov.PLAN_ID, sum(mov.QUANTITY_RATE), trunc(mov.CREATION_DATE)
    FROM MSC_ORDERS_V mov,msc_plans mp
    WHERE mov.ORDER_TYPE_TEXT IN ('Manual MDS')
    AND mov.CATEGORY_SET_ID = 13
    AND mov.PLAN_ID in (66,366,387,406,587,288)
    and mov.quantity_rate <> 0
    and mov.order_number='MDS_MRP'
    and mov.PLAN_ID = mp.PLAN_ID
    GROUP BY mov.ITEM_SEGMENTS, mov.PLAN_ID, trunc(mov.CREATION_DATE);
    CURSOR c_frozen_cost IS
    select msi.inventory_item_id, cic.item_cost from cst_item_costs cic, mtl_system_items_b msi
    where msi.organization_id = 101
    and cic.cost_type_id = 1
    and msi.inventory_item_id in (select distinct(component_item_id) from zz_bom_explosion_temp_save)
    and cic.organization_id = msi.organization_id
    and cic.inventory_item_id = msi.inventory_item_id;
    BEGIN
    EXECUTE IMMEDIATE 'drop table APPS.ZZ_BOM_EXPLOSION_TEMP_SAVE';
    EXECUTE IMMEDIATE 'create table APPS.ZZ_BOM_EXPLOSION_TEMP_SAVE as select * from APPS.BOM_EXPLOSION_TEMP';
    EXECUTE IMMEDIATE 'delete from APPS.ZZ_BOM_EXPLOSION_TEMP_SAVE';
    EXECUTE IMMEDIATE 'alter table APPS.ZZ_BOM_EXPLOSION_TEMP_SAVE add(PLAN_ID NUMBER, QTY_RATE NUMBER, MRP_DATE DATE)';
    COMMIT;
    -- Starting Explosion prosess
    OPEN c_isp_models;
    LOOP
    FETCH c_isp_models INTO v_explodemodel, v_plan_id, v_qty_rate, v_mrp_date; -- Updated on 2nd Mar 2007
    --FETCH c_isp_models INTO v_explodemodel;
    EXIT WHEN c_isp_models%NOTFOUND;
    select inventory_item_id into v_explodemodel_id
    from mtl_system_items_b
    where segment1 = v_explodemodel
    and organization_id = l_organization_id;
    fnd_file.put_line (fnd_file.LOG, v_explodemodel);
    select bom_explosion_temp_s.nextval into l_group_id from dual;
    bompexpl.exploder_userexit
    0,
    l_organization_id,
    1,
    l_group_id,
    l_session_id,
    l_levels_to_explode,
    1,
    1,
    2,
    3,
    2,
    1,
    2,
    1,
    v_explodemodel_id,
    l_revision_date,
    l_err_msg,
    l_err_code
    COMMIT;
    insert into ZZ_BOM_EXPLOSION_TEMP_SAVE
    select
    TOP_BILL_SEQUENCE_ID,
    BILL_SEQUENCE_ID,
    ORGANIZATION_ID,
    COMPONENT_SEQUENCE_ID,
    COMPONENT_ITEM_ID,
    PLAN_LEVEL,
    EXTENDED_QUANTITY,
    SORT_ORDER,
    REQUEST_ID,
    PROGRAM_APPLICATION_ID,
    PROGRAM_ID,
    PROGRAM_UPDATE_DATE,
    GROUP_ID,
    SESSION_ID,
    SELECT_FLAG,
    SELECT_QUANTITY,
    EXTEND_COST_FLAG,
    TOP_ALTERNATE_DESIGNATOR,
    TOP_ITEM_ID,
    CONTEXT,
    ATTRIBUTE1,
    ATTRIBUTE2,
    ATTRIBUTE3,
    ATTRIBUTE4,
    ATTRIBUTE5,
    ATTRIBUTE6,
    ATTRIBUTE7,
    ATTRIBUTE8,
    ATTRIBUTE9,
    ATTRIBUTE10,
    ATTRIBUTE11,
    ATTRIBUTE12,
    ATTRIBUTE13,
    ATTRIBUTE14,
    ATTRIBUTE15,
    HEADER_ID,
    LINE_ID,
    LIST_PRICE,
    SELLING_PRICE,
    COMPONENT_YIELD_FACTOR,
    ITEM_COST,
    INCLUDE_IN_ROLLUP_FLAG,
    BASED_ON_ROLLUP_FLAG,
    ACTUAL_COST_TYPE_ID,
    COMPONENT_QUANTITY,
    SHRINKAGE_RATE,
    SO_BASIS,
    OPTIONAL,
    MUTUALLY_EXCLUSIVE_OPTIONS,
    CHECK_ATP,
    SHIPPING_ALLOWED,
    REQUIRED_TO_SHIP,
    REQUIRED_FOR_REVENUE,
    INCLUDE_ON_SHIP_DOCS,
    INCLUDE_ON_BILL_DOCS,
    LOW_QUANTITY,
    HIGH_QUANTITY,
    PICK_COMPONENTS,
    PRIMARY_UOM_CODE,
    PRIMARY_UNIT_OF_MEASURE,
    BASE_ITEM_ID,
    ATP_COMPONENTS_FLAG,
    ATP_FLAG,
    BOM_ITEM_TYPE,
    PICK_COMPONENTS_FLAG,
    REPLENISH_TO_ORDER_FLAG,
    SHIPPABLE_ITEM_FLAG,
    CUSTOMER_ORDER_FLAG,
    INTERNAL_ORDER_FLAG,
    CUSTOMER_ORDER_ENABLED_FLAG,
    INTERNAL_ORDER_ENABLED_FLAG,
    SO_TRANSACTIONS_FLAG,
    MTL_TRANSACTIONS_ENABLED_FLAG,
    STOCK_ENABLED_FLAG,
    DESCRIPTION,
    ASSEMBLY_ITEM_ID,
    CONFIGURATOR_FLAG,
    PRICE_LIST_ID,
    ROUNDING_FACTOR,
    PRICING_CONTEXT,
    PRICING_ATTRIBUTE1,
    PRICING_ATTRIBUTE2,
    PRICING_ATTRIBUTE3,
    PRICING_ATTRIBUTE4,
    PRICING_ATTRIBUTE5,
    PRICING_ATTRIBUTE6,
    PRICING_ATTRIBUTE7,
    PRICING_ATTRIBUTE8,
    PRICING_ATTRIBUTE9,
    PRICING_ATTRIBUTE10,
    PRICING_ATTRIBUTE11,
    PRICING_ATTRIBUTE12,
    PRICING_ATTRIBUTE13,
    PRICING_ATTRIBUTE14,
    PRICING_ATTRIBUTE15,
    COMPONENT_CODE,
    LOOP_FLAG,
    INVENTORY_ASSET_FLAG,
    PLANNING_FACTOR,
    OPERATION_SEQ_NUM,
    PARENT_BOM_ITEM_TYPE,
    WIP_SUPPLY_TYPE,
    ITEM_NUM,
    EFFECTIVITY_DATE,
    DISABLE_DATE,
    IMPLEMENTATION_DATE,
    SUPPLY_SUBINVENTORY,
    SUPPLY_LOCATOR_ID,
    COMPONENT_REMARKS,
    CHANGE_NOTICE,
    OPERATION_LEAD_TIME_PERCENT,
    REXPLODE_FLAG,
    COMMON_BILL_SEQUENCE_ID,
    PRIMARY_PATH_FLAG,
    AUTO_REQUEST_MATERIAL,
    v_plan_id,
    v_qty_rate,
    v_mrp_date
    from BOM_EXPLOSION_TEMP;
    delete from BOM_EXPLOSION_TEMP;
    commit;
    END LOOP;
    CLOSE c_isp_models;
    --insert into ZZ_BOM_EXPLOSION_TEMP_SAVE select * from BOM_EXPLOSION_TEMP;
    COMMIT;
    -- Ending of Explosion proxess
    -- Updated on 5th Mar 2007 to populate missing frozen item cost
    OPEN c_frozen_cost;
    LOOP
    FETCH c_frozen_cost INTO v_comp_id, v_item_cost;
    EXIT WHEN c_frozen_cost%NOTFOUND;
    update zz_bom_explosion_temp_save
    set item_cost = v_item_cost
    where component_item_id = v_comp_id;
    commit;
    END LOOP;
    CLOSE c_frozen_cost;
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    DBMS_OUTPUT.PUT_LINE('No_data_found');
    WHEN UTL_FILE.INVALID_PATH THEN
    DBMS_OUTPUT.PUT_LINE('UTL_FILE.INVALID_PATH');
    WHEN UTL_FILE.READ_ERROR THEN
    DBMS_OUTPUT.PUT_LINE('UTL_FILE.READ_ERROR');
    WHEN UTL_FILE.WRITE_ERROR THEN
    DBMS_OUTPUT.PUT_LINE('UTL_FILE.WRITE_ERROR');
    WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('Other stuff');
    END main;
    END ZZ_SCHEDULED_BOMEXPLODE;
    /

    Statistics have been updated? Any missing indices? Any explain plans / tkprof outputs on this one?
    Why don't you put
    select inventory_item_id into v_explodemodel_id
    from mtl_system_items_b
    where segment1 = v_explodemodel
    and organization_id = l_organization_id;inside c_isp_models?
    BULK processing that cursor could also be an option.
    Those were the thoughts that came up first when I saw your code.
    C.

Maybe you are looking for