Tunning of below query

Hi,
Please help in tunning of the below.
(SELECT T1.TRANSACTIONID, T1.NARRATION, T1.DEBITCREDITFLAG,
T1.ACCOUNTPRODUCT_ACCPRODID ACCOUNTID, T1.POSTINGDATE, T1.VALUEDATE,T1.AMOUNT from wasadmin.transaction t1 where t1.transactionid in (
select t.transactionid
from wasadmin.transaction t
where T.POSTINGDATE BETWEEN (SELECT BFLASTFREEZETIME FROM bankfusion.BFTB_PERSISTENTTAG)
AND(SELECT BFCURRENTFREEZETIME FROM bankfusion.BFTB_PERSISTENTTAG)
group by t.transactionid
having sum(t.amount) != 0))
Transaction table is huge table with lot of records. it taking 30 min fetch the data.

It looks like the table bankfusion.BFTB_PERSISTENTTAG has only one row. Is this true?
How about this:
SELECT t1.TRANSACTIONID, t1.NARRATION, t1.DEBITCREDITFLAG, t1.ACCOUNTPRODUCT_ACCPRODID ACCOUNTID,
       t1.POSTINGDATE, t1.VALUEDATE, t1.AMOUNT
from wasadmin.transaction t1,     
     (select transactionid, sum(amount) amount
        from wasadmin.transaction
       where POSTINGDATE BETWEEN (SELECT BFLASTFREEZETIME FROM bankfusion.BFTB_PERSISTENTTAG)
                             AND (SELECT BFCURRENTFREEZETIME FROM bankfusion.BFTB_PERSISTENTTAG)
    group by transactionid
      having sum(amount) != 0) t2
where t1.transactionid = t2.transactionid
  and t1.POSTINGDATE BETWEEN (SELECT BFLASTFREEZETIME FROM bankfusion.BFTB_PERSISTENTTAG)
                         AND (SELECT BFCURRENTFREEZETIME FROM bankfusion.BFTB_PERSISTENTTAG)I would actually prefer to see the BFTB_PERSISTENTTAG values obtained beforehand and then plugged into the main query with bind variables:
select BFLASTFREEZETIME, BFCURRENTFREEZETIME
into v_last_freeze_time, v_curr_freeze_time
from  bankfusion.BFTB_PERSISTENTTAG;
SELECT t1.TRANSACTIONID, t1.NARRATION, t1.DEBITCREDITFLAG, t1.ACCOUNTPRODUCT_ACCPRODID ACCOUNTID,
       t1.POSTINGDATE, t1.VALUEDATE, t1.AMOUNT
from wasadmin.transaction t1,     
     (select transactionid, sum(amount) amount
        from wasadmin.transaction
       where POSTINGDATE BETWEEN v_last_freeze_time AND v_curr_freeze_time
    group by transactionid
      having sum(amount) != 0) t2
where t1.transactionid = t2.transactionid
  and t1.POSTINGDATE BETWEEN v_last_freeze_time AND v_curr_freeze_time

Similar Messages

  • Request for tunning the below query

    Hi,
    Can any one help me on the below query while improving the performance,
    SELECT accdet, acceprec, accinvalid, accnetanal, accphy, accvalid,
    actlabcost, actlabhrs, actualcontactdate, actualfinish, actualstart,
    affecteddate, affectedemail, affectedperson, affectedphone,
    alteration, aslaiddwg, assetnum, assetorgid, assetsiteid,
    assumptions, basedet, basereq, bicounty, bidplo, bieasting,
    bihousename, bihouseno, binorthing, bipobox, bipostcode, biposttown,
    bistreet, bisubb as bisupp, boostcomp, boostcompdet, ccemail, cchouseno, ccid,
    ccname, cctel1type, cctel2type, cctelephone1, cctelephone2, cdm,
    changeby, changedate, CLASS, classstructureid, cocontact, cocounty,
    codplo, coeasment, coeasting, cohousename, conorthing, copobox,
    commodity, commoditygroup, coneasereq, consent, consents,
    copostcode, coposttown, costcon, costreet, cosubb, cpi90,
    createworelasset, customerref, custtype, depot, description, durt,
    ecvpressuretier, ecvsize, enduserid, engdifficult, exaoq, existin,
    existsdq, expid, exshq, externalrecid, extralanddetail, failurecode,
    fr1code, fr2code, fuelpovscheme, g17, gbna, glaccount,
    globalticketclass, globalticketid, govconf, govener, govenerdet,
    govhouse, hasactivity, hasld, historyflag, impact, infill,
    infoprovide, inheritstatus, internalpriority, interquote, isglobal,
    isknownerror, isknownerrordate, kioskdet, kioskreq, langcode,
    latecertdate, leadt, lengthpri, lengthpub, loadtype, LOCATION, m25,
    maindesac, mainusage, meterboxty, metercon, meterloc, meterser,
    mininforec, mininforeq, mprnno, newaoq, newpid, newsdq, newshq,
    np14, nrswa, nsgno, oldquotever, oldticketid, orgid, originsgn,
    origrecordclass, origrecordid, origrecorgid, origrecsiteid, owner,
    ownergroup, packagesent, paymethod, payterms, permittowork, physub,
    pressuretier, privateexc, problemcode, propertiesno, propertytype,
    publicexc, purgerel, quotedate, quotetype, quotever, reinforcement,
    reinforcementa, reinforcementb, relatedtoglobal, reportdate,
    reportedby, reportedemail, reportedphone, reportedpriority,
    rowstamp, sc, scj, scoreq, servicerelay, sgnbillcontact,
    sgnblkbyfin, sgncusttobill, sgncusttosite, sgndisreasoth,
    sgneasment, sgnenhance, sgneow, sgneowreq, sgngqmvalid,
    sgninfillcost, sgninfillver, sgninfprojno, sgnisstdchrg,
    sgnloadnoenter, sgnmainsreq, sgnmaxaccdate, sgnnoncont, sgnpipesiz,
    sgnpurord, sgnqdaysremain, sgnqstd, sgnquotdate, sgnquotval,
    sgnreasdis, sgntotalaoq, sgntotalshq, sgnvarreq, sicontact,
    sicounty, sidplo, sieasting, sihousename, sihouseno, sinorthing,
    sipobox, sipostcode, siposttown, sistreet, sisubb, sitecond, sitegt,
    siteid, sitel1, sitel2, siteplpro, sitevisit, solution, sos,
    sosrecdate, SOURCE, status, statusdate, subfinal, supervisor,
    supplytype, surveycarr, surveydef, surveyreas, surveyreq, surveyret,
    surveysent, targetcontactdate, targetfinish, targetstart, TEMPLATE,
    templateid, termtype, thirdpartyeas, thirdpartypipe, ticketid,
    ticketuid, totalaoq, totalpid, totalsdq, totalshq, traffictime,
    typewo, urgency, variat, vendor, customer_enquiry_ref,
    quote_version, costs, mains_infill_charge, mtr_housing_kiosk_charge,
    mtr_housing_kiosk_base_charge, specialist_reinstatement,
    easement_charge, total_quote_ex_vat, vat, total_quote_incl_vat,
    design_charge, reinforcement_charge, reinforcement_cost,
    connection_allowance, workorder.pscdate, workorder.ascdate,
    workorder.fincode, workorder.istask, workorder.status,
    workorder.targstartdate, workorder.targcompdate,
    workorder.schedfinish, workorder.actfinish, workorder.estdur,
    workorder.wonum, workorder.mprn,
    workorder.sihousename AS wositehousename,
    workorder.sihouseno AS wositehouseno,
    workorder.sistreet AS wositestreet,
    workorder.sicounty AS wositecounty,
    workorder.siposttown AS wositeposttown,
    workorder.sipostcode AS wositepostcode, workorder.workorderid
    FROM (maximo.sr
    INNER JOIN
    (maximo.relatedrecord INNER JOIN maximo.workorder
    ON relatedrecord.relatedreckey =
    (CASE
    WHEN workorder.PARENT IS NOT NULL
    THEN workorder.PARENT
    ELSE workorder.wonum
    END
    AND relatedrecord.orgid = workorder.orgid
    AND relatedrecord.siteid = workorder.siteid
    AND relatedrecord.relatedrecclass = 'WORKORDER')
    ON sr.ticketid = relatedrecord.recordkey
    AND sr.orgid = relatedrecord.orgid
    AND sr.siteid = relatedrecord.siteid
    AND relatedrecord.CLASS = 'SR')
    LEFT JOIN
    frozen_quote@gqmfof
    ON sr.ticketid = customer_enquiry_ref
    AND sr.quotever = quote_version
    Regards,
    grace

    Could you please provide more info.
    Refer to the following link.
    When your query takes too long ...
    thanks

  • Need to tune the below query.

    Query below:
    I have generated the explain plan for the same and its cost is overall 2089...
    But Strange once I have removed the "ORDER SIBLINGS BY RETAILER_NM" from below then its cost is coming overall 40.
    Can U suggest me what is the best solution.
    SELECT path as Retailer_id, logical_physical_flg, parent_retailer_id, upper(retailer_nm), max_level
    FROM (SELECT A.RETAILER_ID,LOGICAL_PHYSICAL_FLG, NULL AS PARENT_RETAILER_ID, B.RETAILER_NM, a.retailer_id path,
    (LEVEL+2) AS MAX_LEVEL FROM
    RETAILER B, USER_RETAILER_MAP A WHERE USER_ID= 'ALEX.CAYLESS@GMACIO' AND
    B.RETAILER_ID=A.RETAILER_ID AND B.STATUS='ACTIVE' AND
    A.RETAILER_ID NOT IN (SELECT DISTINCT RETAILER_ID FROM
    RETAILER_HIERARCHY START WITH PARENT_RETAILER_ID IN (SELECT RETAILER_ID FROM USER_RETAILER_MAP A
    WHERE USER_ID= 'ALEX.CAYLESS@GMACIO' AND MANAGED_BY='Y') CONNECT BY PRIOR RETAILER_ID=PARENT_RETAILER_ID)
    AND MANAGED_BY='Y'
    UNION
    SELECT a.RETAILER_ID, LOGICAL_PHYSICAL_FLG, replace(sys_connect_by_path(decode(level, 1, a.parent_retailer_id), '~'), '~') parent_retailer_id, RETAILER_NM, LPAD(' ', 2*LEVEL-1)||SYS_CONNECT_BY_PATH(B.RETAILER_ID, '/') AS path, LEVEL+3 AS MAX_LEVEL
    FROM RETAILER B, RETAILER_HIERARCHY A
    WHERE B.RETAILER_ID=A.RETAILER_ID AND UPPER(B.STATUS)='ACTIVE' AND EXISTS
    (SELECT RETAILER_ID FROM USER_RETAILER_MAP C WHERE USER_ID = 'ALEX.CAYLESS@GMACIO' AND
    B.RETAILER_ID = C.RETAILER_ID AND MANAGED_BY= 'Y')
    START WITH PARENT_RETAILER_ID IN (SELECT A.RETAILER_ID FROM
    RETAILER B, USER_RETAILER_MAP A WHERE USER_ID= 'ALEX.CAYLESS@GMACIO' AND B.RETAILER_ID=A.RETAILER_ID
    AND UPPER(B.STATUS)='ACTIVE' AND A.RETAILER_ID NOT IN (SELECT DISTINCT RETAILER_ID FROM
    RETAILER_HIERARCHY START WITH PARENT_RETAILER_ID IN (SELECT RETAILER_ID FROM USER_RETAILER_MAP A
    WHERE USER_ID= 'ALEX.CAYLESS@GMACIO' AND MANAGED_BY='Y') CONNECT BY PRIOR RETAILER_ID=PARENT_RETAILER_ID)
    AND MANAGED_BY='Y') CONNECT BY PRIOR A.RETAILER_ID=PARENT_RETAILER_ID )
    START WITH PARENT_RETAILER_ID IS NULL CONNECT BY PRIOR RETAILER_ID = PARENT_RETAILER_ID
    ORDER SIBLINGS BY RETAILER_NM
    Explain Plan:
    ==========================
    PLAN_TABLE_OUTPUT
    | Id | Operation | Name | Rows | Bytes | Cost |
    | 0 | SELECT STATEMENT | | 1352 | 5385K| 2089 |
    |* 1 | CONNECT BY WITH FILTERING | | | | |
    |* 2 | FILTER | | | | |
    | 3 | COUNT | | | | |
    | 4 | VIEW | | 1352 | 5385K| 40 |
    | 5 | SORT UNIQUE | | 1352 | 84128 | 40 |
    | 6 | UNION-ALL | | | | |
    |* 7 | HASH JOIN ANTI | | 16 | 1296 | 12 |
    |* 8 | HASH JOIN | | 19 | 1406 | 9 |
    | 9 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
    |* 10 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 2409 | | 1 |
    |* 11 | TABLE ACCESS FULL | RETAILER | 1594 | 70136 | 6 |
    | 12 | VIEW | VW_NSO_1 | 3 | 21 | 2 |
    |* 13 | CONNECT BY WITH FILTERING | | | | |
    | 14 | NESTED LOOPS | | | | |
    |* 15 | HASH JOIN | | 58 | 2262 | 5 |
    | 16 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
    |* 17 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
    | 18 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
    | 19 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
    | 20 | NESTED LOOPS | | | | |
    | 21 | BUFFER SORT | | 3 | 54 | |
    | 22 | CONNECT BY PUMP | | | | |
    |* 23 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
    |* 24 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
    |* 25 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
    |* 26 | FILTER | | | | |
    |* 27 | CONNECT BY WITH FILTERING | | | | |
    |* 28 | FILTER | | | | |
    | 29 | COUNT | | | | |
    |* 30 | HASH JOIN | | 1336 | 82832 | 9 |
    | 31 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 1336 | 24048 | 2 |
    | 32 | TABLE ACCESS FULL | RETAILER | 3188 | 136K| 6 |
    | 33 | NESTED LOOPS ANTI | | 1 | 54 | 5 |
    | 34 | NESTED LOOPS | | 1 | 47 | 3 |
    |* 35 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
    |* 36 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
    |* 37 | TABLE ACCESS BY INDEX ROWID | RETAILER | 1 | 17 | 1 |
    |* 38 | INDEX UNIQUE SCAN | XPKRETAILER | 100 | | |
    |* 39 | VIEW | VW_NSO_3 | 3 | 21 | |
    |* 40 | CONNECT BY WITH FILTERING | | | | |
    | 41 | NESTED LOOPS | | | | |
    |* 42 | HASH JOIN | | 58 | 2262 | 5 |
    | 43 | TABLE ACCESS BY INDEX ROWID| USER_RETAILER_MAP | 19 | 570 | 2 |
    |* 44 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
    | 45 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
    | 46 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
    | 47 | NESTED LOOPS | | | | |
    | 48 | BUFFER SORT | | 3 | 54 | |
    | 49 | CONNECT BY PUMP | | | | |
    |* 50 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
    |* 51 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
    |* 52 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
    | 53 | HASH JOIN | | | | |
    | 54 | CONNECT BY PUMP | | | | |
    | 55 | COUNT | | | | |
    |* 56 | HASH JOIN | | 1336 | 82832 | 9 |
    | 57 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 1336 | 24048 | 2 |
    | 58 | TABLE ACCESS FULL | RETAILER | 3188 | 136K| 6 |
    | 59 | NESTED LOOPS ANTI | | 1 | 54 | 5 |
    | 60 | NESTED LOOPS | | 1 | 47 | 3 |
    |* 61 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
    |* 62 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
    |* 63 | TABLE ACCESS BY INDEX ROWID | RETAILER | 1 | 17 | 1 |
    |* 64 | INDEX UNIQUE SCAN | XPKRETAILER | 100 | | |
    |* 65 | VIEW | VW_NSO_3 | 3 | 21 | |
    |* 66 | CONNECT BY WITH FILTERING | | | | |
    | 67 | NESTED LOOPS | | | | |
    |* 68 | HASH JOIN | | 58 | 2262 | 5 |
    | 69 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
    |* 70 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
    | 71 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
    | 72 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
    | 73 | NESTED LOOPS | | | | |
    | 74 | BUFFER SORT | | 3 | 54 | |
    | 75 | CONNECT BY PUMP | | | | |
    |* 76 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
    |* 77 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
    |* 78 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
    |* 79 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
    |* 80 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
    | 81 | HASH JOIN | | | | |
    | 82 | CONNECT BY PUMP | | | | |
    | 83 | COUNT | | | | |
    | 84 | VIEW | | 1352 | 5385K| 40 |
    | 85 | SORT UNIQUE | | 1352 | 84128 | 40 |
    | 86 | UNION-ALL | | | | |
    |* 87 | HASH JOIN ANTI | | 16 | 1296 | 12 |
    |* 88 | HASH JOIN | | 19 | 1406 | 9 |
    | 89 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
    |* 90 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 2409 | | 1 |
    |* 91 | TABLE ACCESS FULL | RETAILER | 1594 | 70136 | 6 |
    | 92 | VIEW | VW_NSO_1 | 3 | 21 | 2 |
    |* 93 | CONNECT BY WITH FILTERING | | | | |
    | 94 | NESTED LOOPS | | | | |
    |* 95 | HASH JOIN | | 58 | 2262 | 5 |
    | 96 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
    |* 97 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
    | 98 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
    | 99 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
    | 100 | NESTED LOOPS | | | | |
    | 101 | BUFFER SORT | | 3 | 54 | |
    | 102 | CONNECT BY PUMP | | | | |
    |*103 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
    |*104 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
    |*105 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
    |*106 | FILTER | | | | |
    |*107 | CONNECT BY WITH FILTERING | | | | |
    |*108 | FILTER | | | | |
    | 109 | COUNT | | | | |
    |*110 | HASH JOIN | | 1336 | 82832 | 9 |
    | 111 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 1336 | 24048 | 2 |
    | 112 | TABLE ACCESS FULL | RETAILER | 3188 | 136K| 6 |
    | 113 | NESTED LOOPS ANTI | | 1 | 54 | 5 |
    | 114 | NESTED LOOPS | | 1 | 47 | 3 |
    |*115 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
    |*116 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
    |*117 | TABLE ACCESS BY INDEX ROWID | RETAILER | 1 | 17 | 1 |
    |*118 | INDEX UNIQUE SCAN | XPKRETAILER | 100 | | |
    |*119 | VIEW | VW_NSO_3 | 3 | 21 | |
    |*120 | CONNECT BY WITH FILTERING | | | | |
    | 121 | NESTED LOOPS | | | | |
    |*122 | HASH JOIN | | 58 | 2262 | 5 |
    | 123 | TABLE ACCESS BY INDEX ROWID| USER_RETAILER_MAP | 19 | 570 | 2 |
    |*124 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
    | 125 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
    | 126 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
    | 127 | NESTED LOOPS | | | | |
    | 128 | BUFFER SORT | | 3 | 54 | |
    | 129 | CONNECT BY PUMP | | | | |
    |*130 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
    |*131 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
    |*132 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
    | 133 | HASH JOIN | | | | |
    | 134 | CONNECT BY PUMP | | | | |
    | 135 | COUNT | | | | |
    |*136 | HASH JOIN | | 1336 | 82832 | 9 |
    | 137 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 1336 | 24048 | 2 |
    | 138 | TABLE ACCESS FULL | RETAILER | 3188 | 136K| 6 |
    | 139 | NESTED LOOPS ANTI | | 1 | 54 | 5 |
    | 140 | NESTED LOOPS | | 1 | 47 | 3 |
    |*141 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
    |*142 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
    |*143 | TABLE ACCESS BY INDEX ROWID | RETAILER | 1 | 17 | 1 |
    |*144 | INDEX UNIQUE SCAN | XPKRETAILER | 100 | | |
    |*145 | VIEW | VW_NSO_3 | 3 | 21 | |
    |*146 | CONNECT BY WITH FILTERING | | | | |
    | 147 | NESTED LOOPS | | | | |
    |*148 | HASH JOIN | | 58 | 2262 | 5 |
    | 149 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
    |*150 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
    | 151 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
    | 152 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
    | 153 | NESTED LOOPS | | | | |
    | 154 | BUFFER SORT | | 3 | 54 | |
    | 155 | CONNECT BY PUMP | | | | |
    |*156 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
    |*157 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
    |*158 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
    |*159 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
    |*160 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
    Predicate Information (identified by operation id):
    1 - filter("from$_subquery$_001"."PARENT_RETAILER_ID" IS NULL)
    2 - filter("from$_subquery$_001"."PARENT_RETAILER_ID" IS NULL)
    7 - access("A"."RETAILER_ID"="VW_NSO_1"."$nso_col_1")
    8 - access("B"."RETAILER_ID"="A"."RETAILER_ID")
    10 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
    11 - filter("B"."STATUS"='ACTIVE')
    13 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A" WHERE "A"."USER_ID"='ALEX.CAYLES
    S@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY"='Y'))
    15 - access("RETAILER_HIERARCHY"."PARENT_RETAILER_ID"="A"."RETAILER_ID")
    17 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
    23 - filter("SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL)
    24 - filter("A"."MANAGED_BY"='Y')
    25 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
    26 - filter(UPPER("SYS_ALIAS_1"."STATUS")='ACTIVE' AND EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILE
    R_MAP" "C" WHERE "C"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "C"."RETAILER_ID"=:B1 AND "C"
    ."MANAGED_BY"='Y'))
    27 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A","RETAILER" "B", (SELECT /*+ */ "
    SYS_ALIAS_1"."RETAILER_ID" "$nso_col_1" FROM "RETAILER_HIERARCHY" "SYS_ALIAS_1" WHERE
    "SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL) "VW_NSO_3" WHERE "A"."RETAILER_ID"="VW_NSO_3"
    ."$nso_col_1" AND "B"."RETAILER_ID"="A"."RETAILER_ID" AND UPPER("B"."STATUS")='ACTIVE'
    AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY
    "='Y'))
    28 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A","RETAILER" "B", (SELECT /*+ */ "
    SYS_ALIAS_1"."RETAILER_ID" "$nso_col_1" FROM "RETAILER_HIERARCHY" "SYS_ALIAS_1" WHERE
    "SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL) "VW_NSO_3" WHERE "A"."RETAILER_ID"="VW_NSO_3"
    ."$nso_col_1" AND "B"."RETAILER_ID"="A"."RETAILER_ID" AND UPPER("B"."STATUS")='ACTIVE'
    AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY
    "='Y'))
    30 - access("SYS_ALIAS_1"."RETAILER_ID"="SYS_ALIAS_2"."RETAILER_ID")
    35 - filter("A"."MANAGED_BY"='Y')
    36 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
    37 - filter(UPPER("B"."STATUS")='ACTIVE')
    38 - access("B"."RETAILER_ID"="A"."RETAILER_ID")
    39 - filter("A"."RETAILER_ID"="VW_NSO_3"."$nso_col_1")
    40 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A" WHERE "A"."USER_ID"='ALEX.CAYLES
    S@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY"='Y'))
    42 - access("RETAILER_HIERARCHY"."PARENT_RETAILER_ID"="A"."RETAILER_ID")
    44 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
    50 - filter("SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL)
    51 - filter("A"."MANAGED_BY"='Y')
    52 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
    56 - access("SYS_ALIAS_1"."RETAILER_ID"="SYS_ALIAS_2"."RETAILER_ID")
    61 - filter("A"."MANAGED_BY"='Y')
    62 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
    63 - filter(UPPER("B"."STATUS")='ACTIVE')
    64 - access("B"."RETAILER_ID"="A"."RETAILER_ID")
    65 - filter("A"."RETAILER_ID"="VW_NSO_3"."$nso_col_1")
    66 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A" WHERE "A"."USER_ID"='ALEX.CAYLES
    S@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY"='Y'))
    68 - access("RETAILER_HIERARCHY"."PARENT_RETAILER_ID"="A"."RETAILER_ID")
    70 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
    76 - filter("SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL)
    77 - filter("A"."MANAGED_BY"='Y')
    78 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
    79 - filter("C"."MANAGED_BY"='Y')
    80 - access("C"."RETAILER_ID"=:B1 AND "C"."USER_ID"='ALEX.CAYLESS@GMACIO')
    87 - access("A"."RETAILER_ID"="VW_NSO_1"."$nso_col_1")
    88 - access("B"."RETAILER_ID"="A"."RETAILER_ID")
    90 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
    91 - filter("B"."STATUS"='ACTIVE')
    93 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A" WHERE "A"."USER_ID"='ALEX.CAYLES
    S@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY"='Y'))
    95 - access("RETAILER_HIERARCHY"."PARENT_RETAILER_ID"="A"."RETAILER_ID")
    97 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
    103 - filter("SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL)
    104 - filter("A"."MANAGED_BY"='Y')
    105 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
    106 - filter(UPPER("SYS_ALIAS_1"."STATUS")='ACTIVE' AND EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILE
    R_MAP" "C" WHERE "C"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "C"."RETAILER_ID"=:B1 AND "C"
    ."MANAGED_BY"='Y'))
    107 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A","RETAILER" "B", (SELECT /*+ */ "
    SYS_ALIAS_1"."RETAILER_ID" "$nso_col_1" FROM "RETAILER_HIERARCHY" "SYS_ALIAS_1" WHERE
    "SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL) "VW_NSO_3" WHERE "A"."RETAILER_ID"="VW_NSO_3"
    ."$nso_col_1" AND "B"."RETAILER_ID"="A"."RETAILER_ID" AND UPPER("B"."STATUS")='ACTIVE'
    AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY
    "='Y'))
    108 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A","RETAILER" "B", (SELECT /*+ */ "
    SYS_ALIAS_1"."RETAILER_ID" "$nso_col_1" FROM "RETAILER_HIERARCHY" "SYS_ALIAS_1" WHERE
    "SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL) "VW_NSO_3" WHERE "A"."RETAILER_ID"="VW_NSO_3"
    ."$nso_col_1" AND "B"."RETAILER_ID"="A"."RETAILER_ID" AND UPPER("B"."STATUS")='ACTIVE'
    AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY
    "='Y'))
    110 - access("SYS_ALIAS_1"."RETAILER_ID"="SYS_ALIAS_2"."RETAILER_ID")
    115 - filter("A"."MANAGED_BY"='Y')
    116 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
    117 - filter(UPPER("B"."STATUS")='ACTIVE')
    118 - access("B"."RETAILER_ID"="A"."RETAILER_ID")
    119 - filter("A"."RETAILER_ID"="VW_NSO_3"."$nso_col_1")
    120 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A" WHERE "A"."USER_ID"='ALEX.CAYLES
    S@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY"='Y'))
    122 - access("RETAILER_HIERARCHY"."PARENT_RETAILER_ID"="A"."RETAILER_ID")
    124 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
    130 - filter("SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL)
    131 - filter("A"."MANAGED_BY"='Y')
    132 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
    136 - access("SYS_ALIAS_1"."RETAILER_ID"="SYS_ALIAS_2"."RETAILER_ID")
    141 - filter("A"."MANAGED_BY"='Y')
    142 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
    143 - filter(UPPER("B"."STATUS")='ACTIVE')
    144 - access("B"."RETAILER_ID"="A"."RETAILER_ID")
    145 - filter("A"."RETAILER_ID"="VW_NSO_3"."$nso_col_1")
    146 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A" WHERE "A"."USER_ID"='ALEX.CAYLES
    S@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY"='Y'))
    148 - access("RETAILER_HIERARCHY"."PARENT_RETAILER_ID"="A"."RETAILER_ID")
    150 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
    156 - filter("SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL)
    157 - filter("A"."MANAGED_BY"='Y')
    158 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
    159 - filter("C"."MANAGED_BY"='Y')
    160 - access("C"."RETAILER_ID"=:B1 AND "C"."USER_ID"='ALEX.CAYLESS@GMACIO')
    Edited by: user13345267 on Jul 19, 2010 1:56 AM

    Please find formatted sql.
    SELECT path AS retailer_id,
           logical_physical_flg,
           parent_retailer_id,
           Upper(retailer_nm),
           max_level
    FROM   (SELECT a.retailer_id,
                   logical_physical_flg,
                   NULL          AS parent_retailer_id,
                   b.retailer_nm,
                   a.retailer_id path,
                   ( LEVEL + 2 ) AS max_level
            FROM   retailer b,
                   user_retailer_map a
            WHERE  user_id = 'ALEX.CAYLESS@GMACIO'
                   AND b.retailer_id = a.retailer_id
                   AND b.status = 'ACTIVE'
                   AND a.retailer_id NOT IN (SELECT DISTINCT retailer_id
                                             FROM   retailer_hierarchy
                                             START WITH parent_retailer_id IN (
                                                        SELECT
                                                        retailer_id
                                                                               FROM
                                                        user_retailer_map a
                                                                               WHERE
                                             user_id = 'ALEX.CAYLESS@GMACIO'
                                             AND managed_by = 'Y')
                                             CONNECT BY PRIOR
                                             retailer_id = parent_retailer_id)
                   AND managed_by = 'Y'
            UNION
            SELECT a.retailer_id,
                   logical_physical_flg,
                   Replace(Sys_connect_by_path(
                           Decode(LEVEL, 1, a.parent_retailer_id), '~')
                   '~')
                                                             parent_retailer_id,
                   retailer_nm,
                   Lpad(' ', 2 * LEVEL - 1)
                   ||Sys_connect_by_path(b.retailer_id, '/') AS path,
                   LEVEL + 3                                 AS max_level
            FROM   retailer b,
                   retailer_hierarchy a
            WHERE  b.retailer_id = a.retailer_id
                   AND Upper(b.status) = 'ACTIVE'
                   AND EXISTS (SELECT retailer_id
                               FROM   user_retailer_map c
                               WHERE  user_id = 'ALEX.CAYLESS@GMACIO'
                                      AND b.retailer_id = c.retailer_id
                                      AND managed_by = 'Y')
            START WITH parent_retailer_id IN (SELECT a.retailer_id
                                              FROM   retailer b,
                                                     user_retailer_map a
                                              WHERE  user_id = 'ALEX.CAYLESS@GMACIO'
                                                     AND
                                             b.retailer_id = a.retailer_id
                                                     AND Upper(b.status) = 'ACTIVE'
                                                     AND a.retailer_id NOT IN
                                                         (SELECT DISTINCT
                                                         retailer_id
                                                          FROM   retailer_hierarchy
                                             START WITH parent_retailer_id IN
                                                        SELECT
                                                        retailer_id
                                                        FROM
                                                        user_retailer_map a
                                                        WHERE
                                             user_id = 'ALEX.CAYLESS@GMACIO'
                                             AND managed_by = 'Y')
                                             CONNECT BY PRIOR
                                             retailer_id = parent_retailer_id)
                                                     AND managed_by = 'Y')
            CONNECT BY PRIOR a.retailer_id = parent_retailer_id)
    START WITH parent_retailer_id IS NULL
    CONNECT BY PRIOR retailer_id = parent_retailer_id
    ORDER SIBLINGS BY RETAILER_NM
    Execution Plan
    ====================================
    PLAN_TABLE_OUTPUT                                                                                                                  
    | Id  | Operation                                 |  Name                     | Rows  | Bytes | Cost  |                            
    |   0 | SELECT STATEMENT                          |                           |  1352 |  5385K|  2089 |                            
    |*  1 |  CONNECT BY WITH FILTERING                |                           |       |       |       |                            
    |*  2 |   FILTER                                  |                           |       |       |       |                            
    |   3 |    COUNT                                  |                           |       |       |       |                            
    |   4 |     VIEW                                  |                           |  1352 |  5385K|    40 |                            
    |   5 |      SORT UNIQUE                          |                           |  1352 | 84128 |    40 |                            
    |   6 |       UNION-ALL                           |                           |       |       |       |                            
    |*  7 |        HASH JOIN ANTI                     |                           |    16 |  1296 |    12 |                            
    |*  8 |         HASH JOIN                         |                           |    19 |  1406 |     9 |                            
    |   9 |          TABLE ACCESS BY INDEX ROWID      | USER_RETAILER_MAP         |    19 |   570 |     2 |                            
    |* 10 |           INDEX RANGE SCAN                | INDX_USERID_MNGBY         |    19 |       |     1 |                            
    |* 11 |          TABLE ACCESS FULL                | RETAILER                  |    32 |  1408 |     6 |                            
    |  12 |         VIEW                              | VW_NSO_1                  |     3 |    21 |     2 |                            
    |* 13 |          CONNECT BY WITH FILTERING        |                           |       |       |       |                            
    |  14 |           NESTED LOOPS                    |                           |       |       |       |                            
    |* 15 |            HASH JOIN                      |                           |    58 |  2262 |     5 |                            
    |  16 |             TABLE ACCESS BY INDEX ROWID   | USER_RETAILER_MAP         |    19 |   570 |     2 |                            
    |* 17 |              INDEX RANGE SCAN             | INDX_USERID_MNGBY         |    19 |       |     1 |                            
    |  18 |             INDEX FAST FULL SCAN          | AX_RET_HIER               |  1336 | 12024 |     2 |                            
    |  19 |            TABLE ACCESS BY USER ROWID     | RETAILER_HIERARCHY        |       |       |       |                            
    |  20 |           NESTED LOOPS                    |                           |       |       |       |                            
    |  21 |            BUFFER SORT                    |                           |     3 |    54 |       |                            
    |  22 |             CONNECT BY PUMP               |                           |       |       |       |                            
    |* 23 |            INDEX FAST FULL SCAN           | XPKRETAILER_HIERARCHY     |     3 |    54 |     2 |                            
    |* 24 |           TABLE ACCESS BY INDEX ROWID     | USER_RETAILER_MAP         |     1 |    30 |     2 |                            
    |* 25 |            INDEX UNIQUE SCAN              | XPKGSS_USER_RETAILER_MAP  | 45770 |       |     1 |                            
    |* 26 |        FILTER                             |                           |       |       |       |                            
    |* 27 |         CONNECT BY WITH FILTERING         |                           |       |       |       |                            
    |* 28 |          FILTER                           |                           |       |       |       |                            
    |  29 |           COUNT                           |                           |       |       |       |                            
    |* 30 |            HASH JOIN                      |                           |  1336 | 82832 |     9 |                            
    |  31 |             INDEX FAST FULL SCAN          | XPKRETAILER_HIERARCHY     |  1336 | 24048 |     2 |                            
    |  32 |             TABLE ACCESS FULL             | RETAILER                  |  3188 |   136K|     6 |                            
    |  33 |           NESTED LOOPS ANTI               |                           |     1 |    54 |     5 |                            
    |  34 |            NESTED LOOPS                   |                           |     1 |    47 |     3 |                            
    |* 35 |             TABLE ACCESS BY INDEX ROWID   | USER_RETAILER_MAP         |     1 |    30 |     2 |                            
    |* 36 |              INDEX UNIQUE SCAN            | XPKGSS_USER_RETAILER_MAP  | 45770 |       |     1 |                            
    |* 37 |             TABLE ACCESS BY INDEX ROWID   | RETAILER                  |     1 |    17 |     1 |                            
    |* 38 |              INDEX UNIQUE SCAN            | XPKRETAILER               |   100 |       |       |                            
    |* 39 |            VIEW                           | VW_NSO_3                  |     3 |    21 |       |                            
    |* 40 |             CONNECT BY WITH FILTERING     |                           |       |       |       |                            
    |  41 |              NESTED LOOPS                 |                           |       |       |       |                            
    |* 42 |               HASH JOIN                   |                           |    58 |  2262 |     5 |                            
    |  43 |                TABLE ACCESS BY INDEX ROWID| USER_RETAILER_MAP         |    19 |   570 |     2 |                            
    |* 44 |                 INDEX RANGE SCAN          | INDX_USERID_MNGBY         |    19 |       |     1 |                            
    |  45 |                INDEX FAST FULL SCAN       | AX_RET_HIER               |  1336 | 12024 |     2 |                            
    |  46 |               TABLE ACCESS BY USER ROWID  | RETAILER_HIERARCHY        |       |       |       |                            
    |  47 |              NESTED LOOPS                 |                           |       |       |       |                            
    |  48 |               BUFFER SORT                 |                           |     3 |    54 |       |                            
    |  49 |                CONNECT BY PUMP            |                           |       |       |       |                            
    |* 50 |               INDEX FAST FULL SCAN        | XPKRETAILER_HIERARCHY     |     3 |    54 |     2 |                            
    |* 51 |              TABLE ACCESS BY INDEX ROWID  | USER_RETAILER_MAP         |     1 |    30 |     2 |                            
    |* 52 |               INDEX UNIQUE SCAN           | XPKGSS_USER_RETAILER_MAP  | 45770 |       |     1 |                            
    |  53 |          HASH JOIN                        |                           |       |       |       |                            
    |  54 |           CONNECT BY PUMP                 |                           |       |       |       |                            
    |  55 |           COUNT                           |                           |       |       |       |                            
    |* 56 |            HASH JOIN                      |                           |  1336 | 82832 |     9 |                            
    |  57 |             INDEX FAST FULL SCAN          | XPKRETAILER_HIERARCHY     |  1336 | 24048 |     2 |                            
    |  58 |             TABLE ACCESS FULL             | RETAILER                  |  3188 |   136K|     6 |                            
    |  59 |          NESTED LOOPS ANTI                |                           |     1 |    54 |     5 |                            
    |  60 |           NESTED LOOPS                    |                           |     1 |    47 |     3 |                            
    |* 61 |            TABLE ACCESS BY INDEX ROWID    | USER_RETAILER_MAP         |     1 |    30 |     2 |                            
    |* 62 |             INDEX UNIQUE SCAN             | XPKGSS_USER_RETAILER_MAP  | 45770 |       |     1 |                            
    |* 63 |            TABLE ACCESS BY INDEX ROWID    | RETAILER                  |     1 |    17 |     1 |                            
    |* 64 |             INDEX UNIQUE SCAN             | XPKRETAILER               |   100 |       |       |                            
    |* 65 |           VIEW                            | VW_NSO_3                  |     3 |    21 |       |                            
    |* 66 |            CONNECT BY WITH FILTERING      |                           |       |       |       |                            
    |  67 |             NESTED LOOPS                  |                           |       |       |       |                            
    |* 68 |              HASH JOIN                    |                           |    58 |  2262 |     5 |                            
    |  69 |               TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP         |    19 |   570 |     2 |                            
    |* 70 |                INDEX RANGE SCAN           | INDX_USERID_MNGBY         |    19 |       |     1 |                            
    |  71 |               INDEX FAST FULL SCAN        | AX_RET_HIER               |  1336 | 12024 |     2 |                            
    |  72 |              TABLE ACCESS BY USER ROWID   | RETAILER_HIERARCHY        |       |       |       |                            
    |  73 |             NESTED LOOPS                  |                           |       |       |       |                            
    |  74 |              BUFFER SORT                  |                           |     3 |    54 |       |                            
    |  75 |               CONNECT BY PUMP             |                           |       |       |       |                            
    |* 76 |              INDEX FAST FULL SCAN         | XPKRETAILER_HIERARCHY     |     3 |    54 |     2 |                            
    |* 77 |             TABLE ACCESS BY INDEX ROWID   | USER_RETAILER_MAP         |     1 |    30 |     2 |                            
    |* 78 |              INDEX UNIQUE SCAN            | XPKGSS_USER_RETAILER_MAP  | 45770 |       |     1 |                            
    |* 79 |         TABLE ACCESS BY INDEX ROWID       | USER_RETAILER_MAP         |     1 |    30 |     2 |                            
    |* 80 |          INDEX UNIQUE SCAN                | XPKGSS_USER_RETAILER_MAP  | 45770 |       |     1 |                            
    |  81 |   HASH JOIN                               |                           |       |       |       |                            
    |  82 |    CONNECT BY PUMP                        |                           |       |       |       |                            
    |  83 |    COUNT                                  |                           |       |       |       |                            
    |  84 |     VIEW                                  |                           |  1352 |  5385K|    40 |                            
    |  85 |      SORT UNIQUE                          |                           |  1352 | 84128 |    40 |                            
    |  86 |       UNION-ALL                           |                           |       |       |       |                            
    |* 87 |        HASH JOIN ANTI                     |                           |    16 |  1296 |    12 |                            
    |* 88 |         HASH JOIN                         |                           |    19 |  1406 |     9 |                            
    |  89 |          TABLE ACCESS BY INDEX ROWID      | USER_RETAILER_MAP         |    19 |   570 |     2 |                            
    |* 90 |           INDEX RANGE SCAN                | INDX_USERID_MNGBY         |    19 |       |     1 |                            
    |* 91 |          TABLE ACCESS FULL                | RETAILER                  |    32 |  1408 |     6 |                            
    |  92 |         VIEW                              | VW_NSO_1                  |     3 |    21 |     2 |                            
    |* 93 |          CONNECT BY WITH FILTERING        |                           |       |       |       |                            
    |  94 |           NESTED LOOPS                    |                           |       |       |       |                            
    |* 95 |            HASH JOIN                      |                           |    58 |  2262 |     5 |                            
    |  96 |             TABLE ACCESS BY INDEX ROWID   | USER_RETAILER_MAP         |    19 |   570 |     2 |                            
    |* 97 |              INDEX RANGE SCAN             | INDX_USERID_MNGBY         |    19 |       |     1 |                            
    |  98 |             INDEX FAST FULL SCAN          | AX_RET_HIER               |  1336 | 12024 |     2 |                            
    |  99 |            TABLE ACCESS BY USER ROWID     | RETAILER_HIERARCHY        |       |       |       |                            
    | 100 |           NESTED LOOPS                    |                           |       |       |       |                            
    | 101 |            BUFFER SORT                    |                           |     3 |    54 |       |                            
    | 102 |             CONNECT BY PUMP               |                           |       |       |       |                            
    |*103 |            INDEX FAST FULL SCAN           | XPKRETAILER_HIERARCHY     |     3 |    54 |     2 |                            
    |*104 |           TABLE ACCESS BY INDEX ROWID     | USER_RETAILER_MAP         |     1 |    30 |     2 |                            
    |*105 |            INDEX UNIQUE SCAN              | XPKGSS_USER_RETAILER_MAP  | 45770 |       |     1 |                            
    |*106 |        FILTER                             |                           |       |       |       |                            
    |*107 |         CONNECT BY WITH FILTERING         |                           |       |       |       |                            
    |*108 |          FILTER                           |                           |       |       |       |                            
    | 109 |           COUNT                           |                           |       |       |       |                            
    |*110 |            HASH JOIN                      |                           |  1336 | 82832 |     9 |                            
    | 111 |             INDEX FAST FULL SCAN          | XPKRETAILER_HIERARCHY     |  1336 | 24048 |     2 |                            
    | 112 |             TABLE ACCESS FULL             | RETAILER                  |  3188 |   136K|     6 |                            
    | 113 |           NESTED LOOPS ANTI               |                           |     1 |    54 |     5 |                            
    | 114 |            NESTED LOOPS                   |                           |     1 |    47 |     3 |                            
    |*115 |             TABLE ACCESS BY INDEX ROWID   | USER_RETAILER_MAP         |     1 |    30 |     2 |                            
    |*116 |              INDEX UNIQUE SCAN            | XPKGSS_USER_RETAILER_MAP  | 45770 |       |     1 |                            
    |*117 |             TABLE ACCESS BY INDEX ROWID   | RETAILER                  |     1 |    17 |     1 |                            
    |*118 |              INDEX UNIQUE SCAN            | XPKRETAILER               |   100 |       |       |                            
    |*119 |            VIEW                           | VW_NSO_3                  |     3 |    21 |       |                            
    |*120 |             CONNECT BY WITH FILTERING     |                           |       |       |       |                            
    | 121 |              NESTED LOOPS                 |                           |       |       |       |                            
    |*122 |               HASH JOIN                   |                           |    58 |  2262 |     5 |                            
    | 123 |                TABLE ACCESS BY INDEX ROWID| USER_RETAILER_MAP         |    19 |   570 |     2 |                            
    |*124 |                 INDEX RANGE SCAN          | INDX_USERID_MNGBY         |    19 |       |     1 |                            
    | 125 |                INDEX FAST FULL SCAN       | AX_RET_HIER               |  1336 | 12024 |     2 |                            
    | 126 |               TABLE ACCESS BY USER ROWID  | RETAILER_HIERARCHY        |       |       |       |                            
    | 127 |              NESTED LOOPS                 |                           |       |       |       |                            
    | 128 |               BUFFER SORT                 |                           |     3 |    54 |       |                            
    | 129 |                CONNECT BY PUMP            |                           |       |       |       |                            
    |*130 |               INDEX FAST FULL SCAN        | XPKRETAILER_HIERARCHY     |     3 |    54 |     2 |                            
    |*131 |              TABLE ACCESS BY INDEX ROWID  | USER_RETAILER_MAP         |     1 |    30 |     2 |                            
    |*132 |               INDEX UNIQUE SCAN           | XPKGSS_USER_RETAILER_MAP  | 45770 |       |     1 |                            
    | 133 |          HASH JOIN                        |                           |       |       |       |                            
    | 134 |           CONNECT BY PUMP                 |                           |       |       |       |                            
    | 135 |           COUNT                           |                           |       |       |       |                            
    |*136 |            HASH JOIN                      |                           |  1336 | 82832 |     9 |                            
    | 137 |             INDEX FAST FULL SCAN          | XPKRETAILER_HIERARCHY     |  1336 | 24048 |     2 |                            
    | 138 |             TABLE ACCESS FULL             | RETAILER                  |  3188 |   136K|     6 |                            
    | 139 |          NESTED LOOPS ANTI                |                           |     1 |    54 |     5 |                            
    | 140 |           NESTED LOOPS                    |                           |     1 |    47 |     3 |                            
    |*141 |            TABLE ACCESS BY INDEX ROWID    | USER_RETAILER_MAP         |     1 |    30 |     2 |                            
    |*142 |             INDEX UNIQUE SCAN             | XPKGSS_USER_RETAILER_MAP  | 45770 |       |     1 |                            
    |*143 |            TABLE ACCESS BY INDEX ROWID    | RETAILER                  |     1 |    17 |     1 |                            
    |*144 |             INDEX UNIQUE SCAN             | XPKRETAILER               |   100 |       |       |                            
    |*145 |           VIEW                            | VW_NSO_3                  |     3 |    21 |       |                            
    |*146 |            CONNECT BY WITH FILTERING      |                           |       |       |       |                            
    | 147 |             NESTED LOOPS                  |                           |       |       |       |                            
    |*148 |              HASH JOIN                    |                           |    58 |  2262 |     5 |                            
    | 149 |               TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP         |    19 |   570 |     2 |                            
    |*150 |                INDEX RANGE SCAN           | INDX_USERID_MNGBY         |    19 |       |     1 |                            
    | 151 |               INDEX FAST FULL SCAN        | AX_RET_HIER               |  1336 | 12024 |     2 |                            
    | 152 |              TABLE ACCESS BY USER ROWID   | RETAILER_HIERARCHY        |       |       |       |                            
    | 153 |             NESTED LOOPS                  |                           |       |       |       |                            
    | 154 |              BUFFER SORT                  |                           |     3 |    54 |       |                            
    | 155 |               CONNECT BY PUMP             |                           |       |       |       |                            
    |*156 |              INDEX FAST FULL SCAN         | XPKRETAILER_HIERARCHY     |     3 |    54 |     2 |                            
    |*157 |             TABLE ACCESS BY INDEX ROWID   | USER_RETAILER_MAP         |     1 |    30 |     2 |                            
    |*158 |              INDEX UNIQUE SCAN            | XPKGSS_USER_RETAILER_MAP  | 45770 |       |     1 |                            
    |*159 |         TABLE ACCESS BY INDEX ROWID       | USER_RETAILER_MAP         |     1 |    30 |     2 |                            
    |*160 |          INDEX UNIQUE SCAN                | XPKGSS_USER_RETAILER_MAP  | 45770 |       |     1 |                            
    Predicate Information (identified by operation id):                                                                                
       1 - filter("from$_subquery$_001"."PARENT_RETAILER_ID" IS NULL)                                                                  
       2 - filter("from$_subquery$_001"."PARENT_RETAILER_ID" IS NULL)                                                                  
       7 - access("A"."RETAILER_ID"="VW_NSO_1"."$nso_col_1")                                                                           
       8 - access("B"."RETAILER_ID"="A"."RETAILER_ID")                                                                                 
      10 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')                                                        
      11 - filter("B"."STATUS"='ACTIVE')                                                                                               
      13 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A" WHERE "A"."USER_ID"='ALEX.CAYLES                               
                  S@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY"='Y'))                                                       
      15 - access("RETAILER_HIERARCHY"."PARENT_RETAILER_ID"="A"."RETAILER_ID")                                                         
      17 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')                                                        
      23 - filter("SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL)                                                                             
      24 - filter("A"."MANAGED_BY"='Y')                                                                                                
      25 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')                                                       
      26 - filter(UPPER("SYS_ALIAS_1"."STATUS")='ACTIVE' AND  EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILE                               
                  R_MAP" "C" WHERE "C"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "C"."RETAILER_ID"=:B1 AND "C"                               
                  ."MANAGED_BY"='Y'))                                                                                                  
      27 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A","RETAILER" "B", (SELECT /*+ */ "                               
                  SYS_ALIAS_1"."RETAILER_ID" "$nso_col_1" FROM "RETAILER_HIERARCHY" "SYS_ALIAS_1" WHERE                                
                  "SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL) "VW_NSO_3" WHERE "A"."RETAILER_ID"="VW_NSO_3"                               
                  ."$nso_col_1" AND "B"."RETAILER_ID"="A"."RETAILER_ID" AND UPPER("B"."STATUS")='ACTIVE'                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 

  • What step need to take to tune the below query?

    select LPAD(' ', 2*LEVEL-1)||SYS_CONNECT_BY_PATH(USER_ID,'/') AS USER_ID, user_nm USER_NM,LEVEL AS MAX_LEVEL from ( SELECT /*+ use_hash(GS_USER)*/ DISTINCT null PARENT_USER_ID, USER_ID user_id, user_nm FROM GSUSER WHERE GC_DEALER_USER_FLG='G' AND USER_ID IN ( SELECT B.PARENT_USER_ID FROM USER_HIERARCHY B,USER_COUNTRY_MAP A WHERE B.USER_ID=A.USER_ID AND A.COUNTRY_CD = ?)AND USER_ID NOT IN (SELECT B.USER_ID FROM USER_HIERARCHY B,USER_COUNTRY_MAP A WHERE B.USER_ID=A.USER_ID AND A.COUNTRY_CD = ?)AND ROLE_NM = 'GISU' AND UPPER(STATUS) = 'ACTIVE' UNION SELECT /*use_hash(B)*/  NULL as PARENT_USER_ID, B.USER_ID, USER_NM  FROM GS_USER B, USER_COUNTRY_MAP A   WHERE B.USER_ID=A.USER_ID AND  A.COUNTRY_CD =? AND   B.GC_DEALER_USER_FLG='G' AND  B.ROLE_NM = 'GISU'   AND    UPPER(B.STATUS) = 'ACTIVE' AND  B.USER_ID  NOT IN (  SELECT PARENT_USER_ID FROM USER_HIERARCHY) AND  B.USER_ID NOT IN  (  SELECT USER_ID FROM USER_HIERARCHY)  UNION   SELECT /*use_hash(B)*/ DISTINCT a.parent_user_id PARENT_USER_ID,a.user_id USER_ID, b.user_nm FROM GS_USER B, USER_HIERARCHY A WHERE B.USER_ID=A.USER_ID AND B.ROLE_NM = 'GISU' AND UPPER(B.STATUS) = 'ACTIVE' AND B.GC_DEALER_USER_FLG ='G' START WITH A.PARENT_USER_ID in ( SELECT distinct a.USER_ID FROM GS_USER a, USER_HIERARCHY b, USER_COUNTRY_MAP c WHERE a.GC_DEALER_USER_FLG='G' AND a.USER_ID = b.parent_user_id AND b.user_id = c.user_id and c.COUNTRY_CD = ? AND a.user_id NOT IN (SELECT B.USER_ID FROM USER_HIERARCHY B,USER_COUNTRY_MAP A WHERE B.USER_ID=A.USER_ID AND A.COUNTRY_CD = c.country_cd ) AND ROLE_NM = 'GISU' AND UPPER(STATUS) = 'ACTIVE' ) CONNECT BY PRIOR A.USER_ID = A.PARENT_USER_ID ) start with parent_user_id is null connect by prior user_id = parent_user_id ORDER SIBLINGS BY UPPER(USER_NM) ASC

    Please find below the explain plan for the same and some db parameter details:
    NAME TYPE VALUE
    filesystemio_options string
    object_cache_optimal_size integer 102400
    optimizer_dynamic_sampling integer 1
    optimizer_features_enable string 9.2.0
    optimizer_index_caching integer 0
    optimizer_index_cost_adj integer 100
    optimizer_max_permutations integer 2000
    optimizer_mode string ALL_ROWS
    SQL> /
    PLAN_TABLE_OUTPUT
    | Id | Operation | Name | Rows | Bytes |TempSpc| Cost |
    | 0 | SELECT STATEMENT | | 3681 | 373K| | 169 |
    |* 1 | CONNECT BY WITH FILTERING | | | | | |
    |* 2 | FILTER | | | | | |
    | 3 | COUNT | | | | | |
    | 4 | VIEW | | 3681 | 373K| | 99 |
    | 5 | SORT UNIQUE | | 3681 | 319K| 776K| 99 |
    | 6 | UNION-ALL | | | | | |
    | 7 | NESTED LOOPS | | 1 | 119 | | 9 |
    | 8 | NESTED LOOPS | | 1 | 106 | | 9 |
    |* 9 | HASH JOIN ANTI | | 1 | 72 | | 7 |
    | 10 | TABLE ACCESS BY INDEX ROWID | GSS_USER | 6 | 330 | | 2 |
    |* 11 | INDEX RANGE SCAN | INDX_GSSUSR_FLGROLESTS | 6 | | | 1 |
    | 12 | VIEW | VW_NSO_1 | 642 | 10914 | | 4 |
    | 13 | NESTED LOOPS | | 642 | 23754 | | 4 |
    | 14 | INDEX FAST FULL SCAN | XPKGSS_USER_HIERARCHY | 3679 | 62543 | | 4 |
    |* 15 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
    | 16 | TABLE ACCESS BY INDEX ROWID | USER_HIERARCHY | 1 | 34 | | 2 |
    |* 17 | INDEX RANGE SCAN | GSS_USER_HIER_PARENT_USER_ID | 3 | | | 1 |
    |* 18 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 13 | | |
    | 19 | NESTED LOOPS ANTI | | 1 | 109 | | 4 |
    | 20 | NESTED LOOPS ANTI | | 1 | 92 | | 3 |
    | 21 | NESTED LOOPS | | 1 | 75 | | 2 |
    | 22 | TABLE ACCESS BY INDEX ROWID | GSS_USER | 6 | 330 | | 2 |
    |* 23 | INDEX RANGE SCAN | INDX_GSSUSR_FLGROLESTS | 6 | | | 1 |
    |* 24 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
    |* 25 | INDEX RANGE SCAN | XPKGSS_USER_HIERARCHY | 3679 | 62543 | | 1 |
    |* 26 | INDEX RANGE SCAN | GSS_USER_HIER_PARENT_USER_ID | 3679 | 62543 | | 1 |
    |* 27 | FILTER | | | | | |
    |* 28 | CONNECT BY WITH FILTERING | | | | | |
    |* 29 | FILTER | | | | | |
    | 30 | COUNT | | | | | |
    |* 31 | HASH JOIN | | 3679 | 319K| | 20 |
    | 32 | INDEX FAST FULL SCAN | XPKGSS_USER_HIERARCHY | 3679 | 122K| | 4 |
    | 33 | TABLE ACCESS FULL | GSS_USER | 6580 | 353K| | 9 |
    | 34 | NESTED LOOPS | | 1 | 94 | | 4 |
    | 35 | NESTED LOOPS | | 3 | 222 | | 4 |
    |* 36 | TABLE ACCESS BY INDEX ROWID| GSS_USER | 1 | 40 | | 2 |
    |* 37 | INDEX UNIQUE SCAN | XPKGSS_USER | 6580 | | | 1 |
    | 38 | TABLE ACCESS BY INDEX ROWID| USER_HIERARCHY | 3 | 102 | | 2 |
    |* 39 | INDEX RANGE SCAN | GSS_USER_HIER_PARENT_USER_ID | 3 | | | 1 |
    |* 40 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
    | 41 | NESTED LOOPS | | 1 | 37 | | 2 |
    |* 42 | INDEX RANGE SCAN | XPKGSS_USER_HIERARCHY | 1 | 17 | | 2 |
    |* 43 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
    | 44 | HASH JOIN | | | | | |
    | 45 | CONNECT BY PUMP | | | | | |
    | 46 | COUNT | | | | | |
    |* 47 | HASH JOIN | | 3679 | 319K| | 20 |
    | 48 | INDEX FAST FULL SCAN | XPKGSS_USER_HIERARCHY | 3679 | 122K| | 4 |
    | 49 | TABLE ACCESS FULL | GSS_USER | 6580 | 353K| | 9 |
    | 50 | NESTED LOOPS | | 1 | 94 | | 4 |
    | 51 | NESTED LOOPS | | 3 | 222 | | 4 |
    |* 52 | TABLE ACCESS BY INDEX ROWID | GSS_USER | 1 | 40 | | 2 |
    |* 53 | INDEX UNIQUE SCAN | XPKGSS_USER | 6580 | | | 1 |
    | 54 | TABLE ACCESS BY INDEX ROWID | USER_HIERARCHY | 3 | 102 | | 2 |
    |* 55 | INDEX RANGE SCAN | GSS_USER_HIER_PARENT_USER_ID | 3 | | | 1 |
    |* 56 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
    | 57 | NESTED LOOPS | | 1 | 37 | | 2 |
    |* 58 | INDEX RANGE SCAN | XPKGSS_USER_HIERARCHY | 1 | 17 | | 2 |
    |* 59 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
    | 60 | HASH JOIN | | | | | |
    | 61 | CONNECT BY PUMP | | | | | |
    | 62 | COUNT | | | | | |
    | 63 | VIEW | | 3681 | 373K| | 99 |
    | 64 | SORT UNIQUE | | 3681 | 319K| 776K| 99 |
    | 65 | UNION-ALL | | | | | |
    | 66 | NESTED LOOPS | | 1 | 119 | | 9 |
    | 67 | NESTED LOOPS | | 1 | 106 | | 9 |
    |* 68 | HASH JOIN ANTI | | 1 | 72 | | 7 |
    | 69 | TABLE ACCESS BY INDEX ROWID | GSS_USER | 6 | 330 | | 2 |
    |* 70 | INDEX RANGE SCAN | INDX_GSSUSR_FLGROLESTS | 6 | | | 1 |
    | 71 | VIEW | VW_NSO_1 | 642 | 10914 | | 4 |
    | 72 | NESTED LOOPS | | 642 | 23754 | | 4 |
    | 73 | INDEX FAST FULL SCAN | XPKGSS_USER_HIERARCHY | 3679 | 62543 | | 4 |
    |* 74 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
    | 75 | TABLE ACCESS BY INDEX ROWID | USER_HIERARCHY | 1 | 34 | | 2 |
    |* 76 | INDEX RANGE SCAN | GSS_USER_HIER_PARENT_USER_ID | 3 | | | 1 |
    |* 77 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 13 | | |
    | 78 | NESTED LOOPS ANTI | | 1 | 109 | | 4 |
    | 79 | NESTED LOOPS ANTI | | 1 | 92 | | 3 |
    | 80 | NESTED LOOPS | | 1 | 75 | | 2 |
    | 81 | TABLE ACCESS BY INDEX ROWID | GSS_USER | 6 | 330 | | 2 |
    |* 82 | INDEX RANGE SCAN | INDX_GSSUSR_FLGROLESTS | 6 | | | 1 |
    |* 83 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
    |* 84 | INDEX RANGE SCAN | XPKGSS_USER_HIERARCHY | 3679 | 62543 | | 1 |
    |* 85 | INDEX RANGE SCAN | GSS_USER_HIER_PARENT_USER_ID | 3679 | 62543 | | 1 |
    |* 86 | FILTER | | | | | |
    |* 87 | CONNECT BY WITH FILTERING | | | | | |
    |* 88 | FILTER | | | | | |
    | 89 | COUNT | | | | | |
    |* 90 | HASH JOIN | | 3679 | 319K| | 20 |
    | 91 | INDEX FAST FULL SCAN | XPKGSS_USER_HIERARCHY | 3679 | 122K| | 4 |
    | 92 | TABLE ACCESS FULL | GSS_USER | 6580 | 353K| | 9 |
    | 93 | NESTED LOOPS | | 1 | 94 | | 4 |
    | 94 | NESTED LOOPS | | 3 | 222 | | 4 |
    |* 95 | TABLE ACCESS BY INDEX ROWID| GSS_USER | 1 | 40 | | 2 |
    |* 96 | INDEX UNIQUE SCAN | XPKGSS_USER | 6580 | | | 1 |
    | 97 | TABLE ACCESS BY INDEX ROWID| USER_HIERARCHY | 3 | 102 | | 2 |
    |* 98 | INDEX RANGE SCAN | GSS_USER_HIER_PARENT_USER_ID | 3 | | | 1 |
    |* 99 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
    | 100 | NESTED LOOPS | | 1 | 37 | | 2 |
    |*101 | INDEX RANGE SCAN | XPKGSS_USER_HIERARCHY | 1 | 17 | | 2 |
    |*102 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
    | 103 | HASH JOIN | | | | | |
    | 104 | CONNECT BY PUMP | | | | | |
    | 105 | COUNT | | | | | |
    |*106 | HASH JOIN | | 3679 | 319K| | 20 |
    | 107 | INDEX FAST FULL SCAN | XPKGSS_USER_HIERARCHY | 3679 | 122K| | 4 |
    | 108 | TABLE ACCESS FULL | GSS_USER | 6580 | 353K| | 9 |
    | 109 | NESTED LOOPS | | 1 | 94 | | 4 |
    | 110 | NESTED LOOPS | | 3 | 222 | | 4 |
    |*111 | TABLE ACCESS BY INDEX ROWID | GSS_USER | 1 | 40 | | 2 |
    |*112 | INDEX UNIQUE SCAN | XPKGSS_USER | 6580 | | | 1 |
    | 113 | TABLE ACCESS BY INDEX ROWID | USER_HIERARCHY | 3 | 102 | | 2 |
    |*114 | INDEX RANGE SCAN | GSS_USER_HIER_PARENT_USER_ID | 3 | | | 1 |
    |*115 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
    | 116 | NESTED LOOPS | | 1 | 37 | | 2 |
    |*117 | INDEX RANGE SCAN | XPKGSS_USER_HIERARCHY | 1 | 17 | | 2 |
    |*118 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
    Predicate Information (identified by operation id):
    1 - filter("from$_subquery$_001"."PARENT_USER_ID" IS NULL)
    2 - filter("from$_subquery$_001"."PARENT_USER_ID" IS NULL)
    9 - access("GSS_USER"."USER_ID"="VW_NSO_1"."$nso_col_1")
    11 - access("GSS_USER"."GMAC_DEALER_USER_FLG"='G' AND "GSS_USER"."ROLE_NM"='GISU' AND "GSS_USER"."STATUS"='
    ACTIVE')
    15 - access("A"."COUNTRY_CD"='AU' AND "B"."USER_ID"="A"."USER_ID")
    17 - access("GSS_USER"."USER_ID"="B"."PARENT_USER_ID")
    18 - access("A"."COUNTRY_CD"='AU' AND "B"."USER_ID"="A"."USER_ID")
    23 - access("B"."GMAC_DEALER_USER_FLG"='G' AND "B"."ROLE_NM"='GISU' AND "B"."STATUS"='ACTIVE')
    24 - access("A"."COUNTRY_CD"='AU' AND "B"."USER_ID"="A"."USER_ID")
    25 - access("B"."USER_ID"="USER_HIERARCHY"."USER_ID")
    26 - access("B"."USER_ID"="USER_HIERARCHY"."PARENT_USER_ID")
    27 - filter("B"."ROLE_NM"='GISU' AND "B"."STATUS"='ACTIVE' AND "B"."GMAC_DEALER_USER_FLG"='G')
    28 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "SYS_ALIAS_2","USER_HIERARCHY" "B","GSS_USER"
    "SYS_ALIAS_1" WHERE "SYS_ALIAS_1"."USER_ID"=:B1 AND "SYS_ALIAS_1"."GMAC_DEALER_USER_FLG"='G' AN
    D "SYS_ALIAS_1"."ROLE_NM"='GISU' AND "SYS_ALIAS_1"."STATUS"='ACTIVE' AND "SYS_ALIAS_1"."USER_ID
    "="B"."PARENT_USER_ID" AND "B"."USER_ID"="SYS_ALIAS_2"."USER_ID" AND "SYS_ALIAS_2"."COUNTRY_CD"
    ='AU' AND NOT EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "A","USER_HIERARCHY" "B" WHERE "
    B"."USER_ID"=:B2 AND "B"."USER_ID"="A"."USER_ID" AND "A"."COUNTRY_CD"=:B3)))
    29 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "SYS_ALIAS_2","USER_HIERARCHY" "B","GSS_USER"
    "SYS_ALIAS_1" WHERE "SYS_ALIAS_1"."USER_ID"=:B1 AND "SYS_ALIAS_1"."GMAC_DEALER_USER_FLG"='G' AN
    D "SYS_ALIAS_1"."ROLE_NM"='GISU' AND "SYS_ALIAS_1"."STATUS"='ACTIVE' AND "SYS_ALIAS_1"."USER_ID
    "="B"."PARENT_USER_ID" AND "B"."USER_ID"="SYS_ALIAS_2"."USER_ID" AND "SYS_ALIAS_2"."COUNTRY_CD"
    ='AU' AND NOT EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "A","USER_HIERARCHY" "B" WHERE "
    B"."USER_ID"=:B2 AND "B"."USER_ID"="A"."USER_ID" AND "A"."COUNTRY_CD"=:B3)))
    31 - access("B"."USER_ID"="SYS_ALIAS_1"."USER_ID")
    36 - filter("SYS_ALIAS_1"."GMAC_DEALER_USER_FLG"='G' AND "SYS_ALIAS_1"."ROLE_NM"='GISU' AND "SYS_ALIAS_1"."
    STATUS"='ACTIVE')
    37 - access("SYS_ALIAS_1"."USER_ID"=:B1)
    39 - access("SYS_ALIAS_1"."USER_ID"="B"."PARENT_USER_ID")
    40 - access("SYS_ALIAS_2"."COUNTRY_CD"='AU' AND "B"."USER_ID"="SYS_ALIAS_2"."USER_ID")
    filter( NOT EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "A","USER_HIERARCHY" "B" WHERE "B"."USER_I
    D"=:B1 AND "B"."USER_ID"="A"."USER_ID" AND "A"."COUNTRY_CD"=:B2))
    42 - access("B"."USER_ID"=:B1)
    43 - access("A"."COUNTRY_CD"=:B1 AND "B"."USER_ID"="A"."USER_ID")
    47 - access("B"."USER_ID"="SYS_ALIAS_1"."USER_ID")
    52 - filter("SYS_ALIAS_1"."GMAC_DEALER_USER_FLG"='G' AND "SYS_ALIAS_1"."ROLE_NM"='GISU' AND "SYS_ALIAS_1"."
    STATUS"='ACTIVE')
    53 - access("SYS_ALIAS_1"."USER_ID"=:B1)
    55 - access("SYS_ALIAS_1"."USER_ID"="B"."PARENT_USER_ID")
    56 - access("SYS_ALIAS_2"."COUNTRY_CD"='AU' AND "B"."USER_ID"="SYS_ALIAS_2"."USER_ID")
    filter( NOT EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "A","USER_HIERARCHY" "B" WHERE "B"."USER_I
    D"=:B1 AND "B"."USER_ID"="A"."USER_ID" AND "A"."COUNTRY_CD"=:B2))
    58 - access("B"."USER_ID"=:B1)
    59 - access("A"."COUNTRY_CD"=:B1 AND "B"."USER_ID"="A"."USER_ID")
    68 - access("GSS_USER"."USER_ID"="VW_NSO_1"."$nso_col_1")
    70 - access("GSS_USER"."GMAC_DEALER_USER_FLG"='G' AND "GSS_USER"."ROLE_NM"='GISU' AND "GSS_USER"."STATUS"='
    ACTIVE')
    74 - access("A"."COUNTRY_CD"='AU' AND "B"."USER_ID"="A"."USER_ID")
    76 - access("GSS_USER"."USER_ID"="B"."PARENT_USER_ID")
    77 - access("A"."COUNTRY_CD"='AU' AND "B"."USER_ID"="A"."USER_ID")
    82 - access("B"."GMAC_DEALER_USER_FLG"='G' AND "B"."ROLE_NM"='GISU' AND "B"."STATUS"='ACTIVE')
    83 - access("A"."COUNTRY_CD"='AU' AND "B"."USER_ID"="A"."USER_ID")
    84 - access("B"."USER_ID"="USER_HIERARCHY"."USER_ID")
    85 - access("B"."USER_ID"="USER_HIERARCHY"."PARENT_USER_ID")
    86 - filter("B"."ROLE_NM"='GISU' AND "B"."STATUS"='ACTIVE' AND "B"."GMAC_DEALER_USER_FLG"='G')
    87 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "SYS_ALIAS_2","USER_HIERARCHY" "B","GSS_USER"
    "SYS_ALIAS_1" WHERE "SYS_ALIAS_1"."USER_ID"=:B1 AND "SYS_ALIAS_1"."GMAC_DEALER_USER_FLG"='G' AN
    D "SYS_ALIAS_1"."ROLE_NM"='GISU' AND "SYS_ALIAS_1"."STATUS"='ACTIVE' AND "SYS_ALIAS_1"."USER_ID
    "="B"."PARENT_USER_ID" AND "B"."USER_ID"="SYS_ALIAS_2"."USER_ID" AND "SYS_ALIAS_2"."COUNTRY_CD"
    ='AU' AND NOT EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "A","USER_HIERARCHY" "B" WHERE "
    B"."USER_ID"=:B2 AND "B"."USER_ID"="A"."USER_ID" AND "A"."COUNTRY_CD"=:B3)))
    88 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "SYS_ALIAS_2","USER_HIERARCHY" "B","GSS_USER"
    "SYS_ALIAS_1" WHERE "SYS_ALIAS_1"."USER_ID"=:B1 AND "SYS_ALIAS_1"."GMAC_DEALER_USER_FLG"='G' AN
    D "SYS_ALIAS_1"."ROLE_NM"='GISU' AND "SYS_ALIAS_1"."STATUS"='ACTIVE' AND "SYS_ALIAS_1"."USER_ID
    "="B"."PARENT_USER_ID" AND "B"."USER_ID"="SYS_ALIAS_2"."USER_ID" AND "SYS_ALIAS_2"."COUNTRY_CD"
    ='AU' AND NOT EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "A","USER_HIERARCHY" "B" WHERE "
    B"."USER_ID"=:B2 AND "B"."USER_ID"="A"."USER_ID" AND "A"."COUNTRY_CD"=:B3)))
    90 - access("B"."USER_ID"="SYS_ALIAS_1"."USER_ID")
    95 - filter("SYS_ALIAS_1"."GMAC_DEALER_USER_FLG"='G' AND "SYS_ALIAS_1"."ROLE_NM"='GISU' AND "SYS_ALIAS_1"."
    STATUS"='ACTIVE')
    96 - access("SYS_ALIAS_1"."USER_ID"=:B1)
    98 - access("SYS_ALIAS_1"."USER_ID"="B"."PARENT_USER_ID")
    99 - access("SYS_ALIAS_2"."COUNTRY_CD"='AU' AND "B"."USER_ID"="SYS_ALIAS_2"."USER_ID")
    filter( NOT EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "A","USER_HIERARCHY" "B" WHERE "B"."USER_I
    D"=:B1 AND "B"."USER_ID"="A"."USER_ID" AND "A"."COUNTRY_CD"=:B2))
    101 - access("B"."USER_ID"=:B1)
    102 - access("A"."COUNTRY_CD"=:B1 AND "B"."USER_ID"="A"."USER_ID")
    106 - access("B"."USER_ID"="SYS_ALIAS_1"."USER_ID")
    111 - filter("SYS_ALIAS_1"."GMAC_DEALER_USER_FLG"='G' AND "SYS_ALIAS_1"."ROLE_NM"='GISU' AND "SYS_ALIAS_1"."
    STATUS"='ACTIVE')
    112 - access("SYS_ALIAS_1"."USER_ID"=:B1)
    114 - access("SYS_ALIAS_1"."USER_ID"="B"."PARENT_USER_ID")
    115 - access("SYS_ALIAS_2"."COUNTRY_CD"='AU' AND "B"."USER_ID"="SYS_ALIAS_2"."USER_ID")
    filter( NOT EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "A","USER_HIERARCHY" "B" WHERE "B"."USER_I
    D"=:B1 AND "B"."USER_ID"="A"."USER_ID" AND "A"."COUNTRY_CD"=:B2))
    117 - access("B"."USER_ID"=:B1)
    118 - access("A"."COUNTRY_CD"=:B1 AND "B"."USER_ID"="A"."USER_ID")
    Note: cpu costing is off
    218 rows selected.
    Please give me some tips or clue ,so that I can reduce the more cost for the same.
    Thanks in adv.

  • How to tune the below query?is taking 1min 15 sec to process 16,34,300 reco

    SELECT
    user_id,
    ispeak,
    round(sum(DURATION_seconds*convert_duration(pulseunit,ratingunit))/decode(ispeak,0,max(offpeakpulse),max(peakpulse))),
    round(sum(download_bytes*convert_bytes(pulseunit,ratingunit))/decode(ispeak,0,max(offpeakpulse),max(peakpulse))),
    round(sum(upload_bytes*convert_bytes(pulseunit,ratingunit))/decode(ispeak,0,max(offpeakpulse),max(peakpulse))),
    max(packageid),
    max(peakrate),
    max(offpeakrate),
    max(bstplantype),
    max(freevalue),
    max(peakpulse),
    max(offpeakpulse),
    max(pulseunit),
    max(ratingunit)
    FROM aaa_sessions a,subscriber_rate_tab srt
    where
    a.user_id=srt.externalid
    group by user_id,packageid,ispeak
    having
    trunc(min(start_time_utc)) between min(srt.activedt) and min(srt.inactivedt)
    and
    trunc(max(end_time_utc)) between min(srt.activedt) and min(srt.inactivedt);

    Do you have multiprocessor CPU .
    if the value is greater then 3 then you can try with parallel processing
    select value from v$parameter where name ='cpu_count' ;Try this :-
    ALTER SESSION ENABLE PARALLEL QUERY
    SELECT /*+ parallel (a) */
    user_id,
    ispeak,
    round(sum(DURATION_seconds*convert_duration(pulseunit,ratingunit))/decode(ispeak,0,max(offpeakpulse),max(peakpulse))),
    max(ratingunit),
    round(sum(download_bytes*convert_bytes(pulseunit,ratingunit))/decode(ispeak,0,max(offpeakpulse),max(peakpulse))),
    max(ratingunit),
    round(sum(upload_bytes*convert_bytes(pulseunit,ratingunit))/decode(ispeak,0,max(offpeakpulse),max(peakpulse))),
    max(packageid),
    max(peakrate),
    max(offpeakrate),
    max(bstplantype),
    max(freevalue),
    max(peakpulse),
    max(offpeakpulse),
    max(pulseunit),
    max(ratingunit),
    min(start_time_utc) ,
    max(end_time_utc),
    min(srt.activedt),
    min(srt.inactivedt)
    FROM aaa_sessions a,subscriber_rate_tab srt
    where
    a.user_id=srt.externalid(+)
    group by user_id,packageid,ispeak
    having
    trunc(min(start_time_utc)) between min(srt.activedt) and min(srt.inactivedt)
    and
    trunc(max(end_time_utc)) between min(srt.activedt) and min(srt.inactivedt)Cheers
    Nawneet
    Edited by: Nawneet_Aswal on Aug 2, 2010 4:48 AM

  • Please help me what other way i can tune this select query..

    Hello Guru,
    I have a select query which retrieve data from 10 tables and around 4 tables having 2-4 Lac record and rest are having 80,000 - 1 Lac record.
    It is taking around 7-8 seconds to fetch 55000 record.
    I was strictly told by the client that i should not use HINTS in my query. My query is below. Please help me what other way i can tune this select query..
    select
    CT.CUST_ID
    ,CT.ROMANISED_SURNAME
    ,CT.SURNAME
    ,CT.ROMANISED_GIVEN_NAME
    ,CT.GIVEN_NAME
    ,CT.ROMANISED_MIDDLE_NAME
    ,CT.MIDDLE_NAME
    ,CT.ROMANISED_NAME_SUFFIX
    ,CT.NAME_SUFFIX
    ,CT.ROMANISED_TITLE
    ,CT.TITLE
    ,CT.ROMANISED_NAME_INITIALS
    ,CT.NAME_INITIALS
    ,CT.NAME_TEXT
    ,CT.CUST_JRNY_ID
    ,RK.REMARK_TYPE
    ,RK.REMARK_ID+CT.CUST_ID as REMARK_ID
    ,RK.REMARK_STATUS
    ,RK.REMARK_TEXT
    ,RK.HOST_ONLY_IND
    ,RK.SUPERVISORY_IND
    ,RK.CUST_COMM_IND
    ,RK.REMARK_SEQ
    ,RK.REMARK_CODE
    ,RK.DEFAULT_CUST_REL_IND
    ,RK.DEFAULT_FLIGHT_SEG_REL_IND
    ,RK.IATA_CODE
    ,RK.ICAO_CODE
    ,CJ.RECORD_LOCATOR "SITA_RECORD_LOCATOR"
    ,Cjv.Record_Locator "ORIGINATOR_RECORD_LOCATOR"
    ,FS.TRAVELLING_GROUP_CODE
    ,CG.GROUP_NAME
    FROM FLIGHT_LEG FL
    ,CUST_FLIGHT_LEG CFL
    ,CUST CT
    ,CUST_REMARK CTR
    ,REMARK RK
    ,FLIGHT_SEG_FLIGHT_LEG FSFL
    ,FLIGHT_SEG FS
    ,CUST_JRNY CJ
    ,CUST_JRNY_VERSION CJV
    ,CUST_GROUP CG
    WHERE FL.OPR_FLIGHT_NUMBER = 1--I_OPR_FLIGHT_NUMBER
    and FL.HISTORY_VERSION_NUMBER = 0
    and FL.DEPARTURE_STATION_CODE = 'DEL'--I_DEPARTURE_STATION_CODE
    and FL.DEPARTURE_DATETIME = TO_DATE('10-DEC-2012 18.45.00', 'DD-MON-YYYY HH24.MI.SS')
    and FL.OPR_SERVICE_PROVIDER_CODE= 'AI'--i_opr_service_provider_code
    and FL.OPR_FLIGHT_SUFFIX = 'A'--NVL(I_OPR_FLIGHT_SUFFIX, FL.OPR_FLIGHT_SUFFIX)
    AND FL.FLIGHT_LEG_ID = CFL.FLIGHT_LEG_ID
    AND CFL.CUST_ID = CT.CUST_ID
    AND FL.FLIGHT_LEG_ID=FSFL.FLIGHT_LEG_ID
    AND FSFL.FLIGHT_SEG_ID=FS.FLIGHT_SEG_ID
    AND CT.CUST_ID = CTR.CUST_ID(+)
    AND CTR.REMARK_ID = RK.REMARK_ID(+)
    AND FL.CUST_JRNY_ID = CJ.CUST_JRNY_ID
    and CJ.CUST_JRNY_ID = CJV.CUST_JRNY_ID
    AND CG.CUST_JRNY_ID(+) = CT.CUST_JRNY_ID
    AND CFL.HISTORY_VERSION_NUMBER = 0
    AND CT.HISTORY_VERSION_NUMBER = 0
    AND NVL(CTR.HISTORY_VERSION_NUMBER,0) = 0
    AND NVL(RK.HISTORY_VERSION_NUMBER,0) = 0
    AND FS.HISTORY_VERSION_NUMBER = 0
    AND FSFL.HISTORY_VERSION_NUMBER = 0
    -- AND CJ.HISTORY_VERSION_NUMBER = 0
    and CJV.VERSION_NUMBER = 0 --- Need to check
    AND NVL(CG.HISTORY_VERSION_NUMBER,0) = 0
    order by CT.CUST_JRNY_ID,CT.CUST_ID;
    The Tables having record:
    select COUNT(*) from FLIGHT_LEG -----241756
    select COUNT(*) from CUST_FLIGHT_LEG---632585
    select COUNT(*) from CUST---240015
    select COUNT(*) from CUST_REMARK---73724
    select COUNT(*) from REMARK---73654
    select COUNT(*) from FLIGHT_SEG_FLIGHT_LEG---241789
    select COUNT(*) from FLIGHT_SEG----260004
    select COUNT(*) from CUST_JRNY----74288
    select COUNT(*) from CUST_JRNY_VERSION----74477
    select COUNT(*) from CUST_GROUP----55819
    Thanks,
    HP..

    Plan hash value: 3771714931
    | Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | Pstart| Pstop |
    | 0 | SELECT STATEMENT | | 10239 | 2949K| | 7515 (1)| 00:01:31 | | |
    | 1 | SORT ORDER BY | | 10239 | 2949K| 3160K| 7515 (1)| 00:01:31 | | |
    |* 2 | HASH JOIN | | 10239 | 2949K| | 6864 (1)| 00:01:23 | | |
    | 3 | PARTITION HASH ALL | | 73687 | 1079K| | 417 (1)| 00:00:06 | 1 | 512 |
    |* 4 | TABLE ACCESS FULL | CUST_JRNY_VERSION | 73687 | 1079K| | 417 (1)| 00:00:06 | 1 | 512 |
    |* 5 | HASH JOIN | | 10239 | 2799K| | 6445 (1)| 00:01:18 | | |
    | 6 | PARTITION HASH ALL | | 73654 | 863K| | 178 (1)| 00:00:03 | 1 | 512 |
    | 7 | TABLE ACCESS FULL | CUST_JRNY | 73654 | 863K| | 178 (1)| 00:00:03 | 1 | 512 |
    |* 8 | FILTER | | | | | | | | |
    |* 9 | HASH JOIN RIGHT OUTER | | 10239 | 2679K| | 6267 (1)| 00:01:16 | | |
    | 10 | PARTITION HASH ALL | | 55315 | 756K| | 137 (1)| 00:00:02 | 1 | 512 |
    | 11 | TABLE ACCESS FULL | CUST_GROUP | 55315 | 756K| | 137 (1)| 00:00:02 | 1 | 512 |
    |* 12 | FILTER | | | | | | | | |
    |* 13 | HASH JOIN OUTER | | 10240 | 2540K| 2056K| 6129 (1)| 00:01:14 | | |
    |* 14 | FILTER | | | | | | | | |
    |* 15 | HASH JOIN RIGHT OUTER | | 10242 | 1930K| | 5531 (1)| 00:01:07 | | |
    | 16 | INDEX FAST FULL SCAN | CUST_REMARK_PK | 73677 | 935K| | 190 (0)| 00:00:03 | | |
    |* 17 | HASH JOIN | | 10257 | 1802K| | 5339 (1)| 00:01:05 | | |
    |* 18 | HASH JOIN | | 10257 | 701K| | 3516 (1)| 00:00:43 | | |
    |* 19 | HASH JOIN | | 3963 | 220K| | 2476 (1)| 00:00:30 | | |
    |* 20 | HASH JOIN | | 3963 | 181K| | 1300 (1)| 00:00:16 | | |
    | 21 | PARTITION HASH ALL | | 3963 | 131K| | 728 (1)| 00:00:09 | 1 | 512 |
    |* 22 | TABLE ACCESS FULL | FLIGHT_LEG | 3963 | 131K| | 728 (1)| 00:00:09 | 1 | 512 |
    |* 23 | INDEX FAST FULL SCAN| FLIGHT_SEG_FLIGHT_LEG_PK | 240K| 3059K| | 571 (1)| 00:00:07 | | |
    | 24 | PARTITION HASH ALL | | 259K| 2531K| | 1175 (1)| 00:00:15 | 1 | 512 |
    |* 25 | TABLE ACCESS FULL | FLIGHT_SEG | 259K| 2531K| | 1175 (1)| 00:00:15 | 1 | 512 |
    | 26 | PARTITION HASH ALL | | 631K| 8011K| | 1037 (1)| 00:00:13 | 1 | 512 |
    |* 27 | TABLE ACCESS FULL | CUST_FLIGHT_LEG | 631K| 8011K| | 1037 (1)| 00:00:13 | 1 | 512 |
    | 28 | PARTITION HASH ALL | | 239K| 25M| | 1822 (1)| 00:00:22 | 1 | 512 |
    |* 29 | TABLE ACCESS FULL | CUST | 239K| 25M| | 1822 (1)| 00:00:22 | 1 | 512 |
    | 30 | PARTITION HASH ALL | | 73623 | 4385K| | 243 (1)| 00:00:03 | 1 | 512 |
    | 31 | TABLE ACCESS FULL | REMARK | 73623 | 4385K| | 243 (1)| 00:00:03 | 1 | 512 |
    Predicate Information (identified by operation id):
    2 - access("CJ"."CUST_JRNY_ID"="CJV"."CUST_JRNY_ID")
    4 - filter("CJV"."VERSION_NUMBER"=0)
    5 - access("FL"."CUST_JRNY_ID"="CJ"."CUST_JRNY_ID")
    8 - filter(NVL("CG"."HISTORY_VERSION_NUMBER",0)=0)
    9 - access("CG"."CUST_JRNY_ID"(+)="CT"."CUST_JRNY_ID")
    12 - filter(NVL("RK"."HISTORY_VERSION_NUMBER",0)=0)
    13 - access("CTR"."REMARK_ID"="RK"."REMARK_ID"(+))
    14 - filter(NVL("CTR"."HISTORY_VERSION_NUMBER",0)=0)
    15 - access("CT"."CUST_ID"="CTR"."CUST_ID"(+))
    17 - access("CFL"."CUST_ID"="CT"."CUST_ID")
    18 - access("FL"."FLIGHT_LEG_ID"="CFL"."FLIGHT_LEG_ID")
    19 - access("FSFL"."FLIGHT_SEG_ID"="FS"."FLIGHT_SEG_ID")
    20 - access("FL"."FLIGHT_LEG_ID"="FSFL"."FLIGHT_LEG_ID")
    22 - filter("FL"."DEPARTURE_STATION_CODE"='DEL' AND "FL"."DEPARTURE_DATETIME"=TO_DATE(' 2012-12-10 18:45:00', 'syyyy-mm-dd
    hh24:mi:ss') AND "FL"."OPR_SERVICE_PROVIDER_CODE"='AI' AND "FL"."OPR_FLIGHT_NUMBER"=1 AND "FL"."OPR_FLIGHT_SUFFIX"='A' AND
    "FL"."HISTORY_VERSION_NUMBER"=0)
    23 - filter("FSFL"."HISTORY_VERSION_NUMBER"=0)
    25 - filter("FS"."HISTORY_VERSION_NUMBER"=0)
    27 - filter("CFL"."HISTORY_VERSION_NUMBER"=0)
    29 - filter("CT"."HISTORY_VERSION_NUMBER"=0)

  • How can I replace the cursor in the below query?

    I have this below query which calls a stored procedure that takes only 1 item's attributes at a time. But because of performance problems we are
    required to remove the cursor. How can I replace the below cursor logic with set operations or CTE? Please advice.
    DECLARE db_cursor_ava CURSOR
    FOR
    SELECT t.[agent-id],
    t.[start-date],
    t.[end-date],
    t.[monitor-days],
    t.[monitor-start],
    t.[monitor-end],
    t.[timezone-offset]
    FROM @tmpAgentPeriodTimeRange t
    OPEN db_cursor_ava
    FETCH NEXT FROM db_cursor_ava INTO @agentID_ava,
    @stDateTime_ava,
    @endDateTime_ava,
    @monDays_ava,
    @monSt_ava,
    @monEnd_ava,
    @offset_ava
    WHILE @@FETCH_STATUS = 0
    BEGIN
    DELETE
    FROM @tmpMonitorPeriod
    DELETE
    FROM @tmpFinalResult
    SET @runID = 1
    IF(@endDateTime_ava>DATEADD(MI,@offset_ava, GETUTCDATE()))
    BEGIN
    SET @endDateTime_ava=DATEADD(MI,@offset_ava, GETUTCDATE())
    END
    INSERT INTO @tmpMonitorPeriod
    EXEC core.usp_GetMonitoringPeriod
    @startDate = @stDateTime_ava,
    @endDate = @endDateTime_ava,
    @monitoringDays = @monDays_ava,
    @monitoringStart = @monSt_ava,
    @monitoringEnd = @monEnd_ava
    SELECT @maxID = MAX(tm.id)
    FROM @tmpMonitorPeriod tm
    FETCH NEXT FROM db_cursor_ava INTO @agentID_ava,
    @stDateTime_ava,
    @endDateTime_ava,
    @monDays_ava,
    @monSt_ava,
    @monEnd_ava,
    @offset_ava
    END
    CLOSE db_cursor_ava
    DEALLOCATE db_cursor_ava
    mayooran99

    You've been down this path before  - and the response is exactly the same.
    how to replace cursor logic
    And I'll suggest that you post the entire code - since you repeatedly delete 2 table variables but only populate one. The setting of @maxID also seems to have no purpose. And perhaps the issue here isn't the cursor but the general approach.  Who knows
    - but it appears you may have prematurely assumed that the cursor is the problem.

  • I am getting "Invalid Identifier" while running the below query

    Iam getting the error "Invalid Identifier, c_rank" while running the below query. Please help.
    select a.*, b.pog_description pog_description, b.start_date,
    row_number() over(partition by b.pog_description order by b.start_date) c_rank
    from temp_codi_dept_35 a, pog_master_msi b, pog_skus_msi c
    where a.sku = c.pog_sku
    and b.pog_id = c.pog_id
    and b.pog_dept = c.pog_dept
    and b.pog_number = c.pog_number
    and b.pog_level = c.pog_level
    and a.sku = 10263477
    and c_rank = 1;

    >
    Iam getting the error "Invalid Identifier, c_rank" while running the below query. Please help.
    select a.*, b.pog_description pog_description, b.start_date,
    row_number() over(partition by b.pog_description order by b.start_date) c_rank
    from temp_codi_dept_35 a, pog_master_msi b, pog_skus_msi c
    where a.sku = c.pog_sku
    and b.pog_id = c.pog_id
    and b.pog_dept = c.pog_dept
    and b.pog_number = c.pog_number
    and b.pog_level = c.pog_level
    and a.sku = 10263477
    and c_rank = 1;
    >
    You can't use 'c_rank' in the where clause because it doesn't exist; you are computing it in the SELECT clause.
    Remove the last condition and wrap your query in another one to select by 'c_rank'.

  • How to use outer join condition in my below query.

    Hi All,
    How to use outer join condition in my below query.
    In the table  APPS_JP.GEDIS_OFFER_HEADER goh I have more records
    in the table APPS_JP.GEDIS_ORDER_BUILDS gob I have less number of records.
    I want all the records from APPS_JP.GEDIS_OFFER_HEADER goh
    including other conditions.
    I have tried goh.OFFER_NO=gob.OFFER_NO(+) but same result.
    [code]SELECT   GOH.ORIG_SYSTEM,
               gsp.USER_NAME,
               goh.ORDER_NO,
               goh.OMEGA_ORDER_NUMBER,
               goh.ORDER_TYPE,
               gc.CUSTOMER_ID,
               gc.OMEGA_CUSTOMER_NUMBER,
               CASE WHEN gc.PRIVATE = 'N' THEN gc.CUSTOMER_NAME ELSE '' END
                  AS COMPANY_NAME,
               goh.ORDER_STATUS,
               goh.TOTAL_SELLING_PRICE,
               goh.TOTAL_MARGIN,
                  ga1.ADDRESS1
               || ','
               || ga1.ADDRESS2
               || ','
               || ga1.ADDRESS3
               || ','
               || ga1.POSTAL_CODE
               || ','
               || ga1.CITY
                  AS SHIPPING_ADDRESS,
                  ga2.ADDRESS1
               || ','
               || ga2.ADDRESS2
               || ','
               || ga2.ADDRESS3
               || ','
               || ga2.POSTAL_CODE
               || ','
               || ga2.CITY
                  AS BILLING_ADDRESS,
               ga.ADDRESS_ID,
               gol.DESCRIPTION,
               APPS_JP.TZ.to_local_date (goh.OFFER_DATE, goh.OFFER_DATE_UTC)
                  AS OFFER_DATE,
               gc.LEVEL_8,
               goh.NO_OF_BUILDS,
               gob.SFDC_ID,
               goh.PURCHASE_ORDER_NO AS PO,
               gc1.CUSTOMER_NAME AS END_USAGE,
               gol.LOB,
               goh.TOTAL_MARGIN_PCT,
               goh.TOTAL_DISCOUNT,
               goh.TOTAL_DISCOUNT_PCT
        FROM   APPS_JP.GEDIS_OFFER_HEADER goh,
               APPS_JP.GEDIS_ORDER_BUILDS gob,
               APPS_JP.GEDIS_ORDER_LINES gol,
               APPS_JP.GEDIS_OFFER_RELATED_CUSTOMER gorc,
               APPS_JP.GEDIS_OFFER_RELATED_CUSTOMER ship,
               APPS_JP.GEDIS_OFFER_RELATED_CUSTOMER bill,
               APPS_JP.GEDIS_CUSTOMER gc,
               APPS_JP.GEDIS_CUSTOMER gc1,
               APPS_JP.GEDIS_CONTACT gct,
               APPS_JP.GEDIS_ADDRESS ga,
               APPS_JP.GEDIS_ADDRESS_NORM ga1,
               APPS_JP.GEDIS_ADDRESS_NORM ga2,
               (SELECT   DISTINCT SALESPERSON_ID, USER_NAME
                  FROM   APPS_JP.GEDIS_SALESPERSON
                 WHERE   SALESPERSON_ID IN
                               (SELECT   TO_NUMBER (COLUMN_VALUE) AS SALESPERSON_ID
                                  FROM   TABLE (APPS_GLOBAL.SplitString ('337309'))))
               gsp
       WHERE       goh.ORDER_NO <> 0
               AND goh.OFFER_NO <> 0
               AND goh.OFFER_NO=gol.OFFER_NO
               AND gol.BUILD_NO = 1
               AND gol.LINE_NO = 1
               AND goh.OFFER_NO=gob.OFFER_NO
               AND gob.BUILD_NO = 1
               AND goh.OFFER_NO = gorc.OFFER_NO
               AND gct.CONTACT_ID = gorc.CONTACT_ID
               AND ga.CUSTOMER_ID = gc.CUSTOMER_ID
               AND ga.PRIMARY = 'Y'
               AND goh.LEAD_SALESPERSON=gsp.SALESPERSON_ID
               AND goh.OFFER_NO = ship.OFFER_NO
               AND ship.RELATION_TYPE = 'SHIP'
               AND ga1.ADDRESS_ID = ship.ADDRESS_ID
               AND ga1.CUSTOMER_ID = gc1.CUSTOMER_ID
               AND goh.OFFER_NO = bill.OFFER_NO
               AND bill.RELATION_TYPE = 'BILL'
               AND ga2.ADDRESS_ID = bill.ADDRESS_ID
               AND goh.OFFER_DATE BETWEEN APPS_JP.TZ.LOCAL_TO_DB_DATE (
                                             SYSDATE - 30
                                      AND  APPS_JP.TZ.LOCAL_TO_DB_DATE (SYSDATE)
               AND gorc.RELATION_TYPE = 'BASE'
               AND gorc.CUSTOMER_ID = gc.CUSTOMER_ID
               AND goh.SALES_CHANNEL = gc.SALES_CHANNEL
               AND gc.SALES_CHANNEL = 'SMB'
               AND goh.LEAD_SALESPERSON IN (goh.CREATED_BY, goh.LEAD_SALESPERSON)
    ORDER BY   goh.OFFER_NO;[/code]
    Please help me how to use this outer join condition.
    Thanks in advance.

    Hi,
    If you want all the rows from goh, then you don't want any conditions like  goh.OFFER_NO <> 0.
    Make all the joins to goh outer joins, and make all conditions that apply to any tables joined to goh (or to tables joined to them) part of the join condition, like this:
    FROM             APPS_JP.GEDIS_OFFER_HEADER     goh
    LEFT OUTER JOIN  APPS_JP.GEDIS_ORDER_BUILDS     gob  ON   gob.OFFER_NO = goh.OFFER_NO
                                                         AND  gob.BUILD_NO = 1
    LEFT OUTER JOIN  APPS_JP.GEDIS_ORDER_LINES      gol  ON   gol.OFFER_NO = goh.OFFER_NO
                                                         AND  gol.BUILD_NO = 1
                                                         AND  gol.LINE_NO  = 1
    LEFT OUTER JOIN  APPS_JP.GEDIS_OFFER_RELATED_CUSTOMER
                                                    gorc ...
    I hope this answers your question.
    If not, post a little sample data (CREATE TABLE and INSERT statements, relevant columns only) for all the tables involved, and the results you want from that data.
    Simplify the problem as much as possible.  For example, do you really need all those tables to show what the problem is?  Of course, you need them in tyour real query, but if you understand a solution that only involves 4 or 5 tables, you'll know how to apply it to any number of tables.
    Explain, using specific examples, how you get those results from that data.Always say what version of Oracle you're using (e.g. 11.2.0.2.0).
    See the forum FAQ https://forums.oracle.com/message/9362002#9362002

  • How to execute the output of the below query automatically

    Hi All,
    I want to execute the output of the below query automatically, instead of manually copying it and execute.
    select 'alter database ['+name+'] set recovery simple' from master.sys.databases where database_id > 4 and state_desc = 'online'
    Please provide me a script to do this.
    ThanK
    Kate

    EXEC sp_MSforeachdb N'ALTER DATABASE [?] SET recovery simple';--- This will set the recovery model for all the system database.The query provided by Vikash16, meets my requirement. Thank you.

  • How to group by below query?

    Hi All,
    I have below query,
    SELECT username,firstname,lastname,country
    FROM emp e1
    WHERE EXISTS (
    SELECT 1
    FROM emp
    WHERE e1.lastname = firstname
    AND e1.firstname) = lastname )
    OR EXISTS (
    SELECT 1
    FROM emp
    WHERE lastname = e1.lastname
    AND firstname) = e1.firstname )
    and the result of the query is
    USERNAME,      FIRSTNAME,     LASTNAME, COUNTRY
    1,     b6,     a6, CH
    2,     a6,     b6,     CH
    3,     a1,     b1,     CH
    4,     b1,     a1,     CH
    5,     a2,     b2,     CH
    6,     a2,     b2,     CH
    7,     b1,      a1,     CH
    8,     b1,     a1,     CH
    9,     b2,     a2,     CH
    10,     b2, a2,     CH
    now i have to group all the firstname and lastname which are haviing values
    1) a1,b1 and b1,a1
    2) a2,b2 and b2,a2
    3) a6,b6 and b6,a6
    Can you please help me in this?
    Thanks in advance.
    Edited by: user9258447 on Jul 27, 2010 6:16 AM

    Welcome to the forum!
    select least (first_name, last_name)
         , greatest (first_name, last_name)
         , ctry     
      from test
    group by least (first_name, last_name)
            , greatest (first_name, last_name)
            , ctryas in
    SQL> with test as
      2  (
      3  select 1 username,    'b6' first_name,    'a6' last_name, 'CH' ctry from dual union all
      4  select 2 username,    'a6' first_name,    'b6' last_name,    'CH' ctry from dual union all
      5  select 3 username,    'a1' first_name,    'b1' last_name,    'CH' ctry from dual union all
      6  select 4 username,    'b1' first_name,    'a1' last_name,    'CH' ctry from dual union all
      7  select 5 username,    'a2' first_name,    'b2' last_name,    'CH' ctry from dual union all
      8  select 6 username,    'a2' first_name,    'b2' last_name,    'CH' ctry from dual union all
      9  select 7 username,    'b1' first_name, 'a1' last_name,    'CH' ctry from dual union all
    10  select 8 username,    'b1' first_name,    'a1' last_name,    'CH' ctry from dual union all
    11  select 9 username,    'b2' first_name,    'a2' last_name,    'CH' ctry from dual union all
    12  select 1 username0,  'b2' first_name, 'a2' last_name,  'CH' ctry from dual
    13  )
    14  select least (first_name, last_name)
    15       , greatest (first_name, last_name)
    16       , ctry     
    17    from test
    18   group by least (first_name, last_name)
    19          , greatest (first_name, last_name)
    20          , ctry
    21  /
    LE GR CT
    a1 b1 CH
    a2 b2 CH
    a6 b6 CH

  • How to add docentry with some num.?can you solve below query   Declare @a as Numeric SET @a=14900000; SELECT (@a+($[@MAINTDCHEAD.DocEntry])as 'series no'

    how to add docentry with some num.?
    can you solve below query
    Declare @a as Numeric
    SET @a=14900000;
    SELECT (@a+($[@MAINTDCHEAD.DocEntry])as 'series no'

    Hi,
    Yes possible.
    Try this:
    Declare @a as INT
    SET @a=14900000;
    SELECT (@a+($[ORDR.DocEntry]))
    Thanks & Regards,
    Nagarajan

  • How i can add document nu in below query

    i want to add one field in below query
    field is bkpf-xblnr
    i want document number after d_text.
    here d_text = 'Payment for'
        CLEAR: tab_out-value,tab_out-name.
        READ TABLE tab_out WITH KEY 'D_TEXT'.
        tab_out-value = d_text.
        MODIFY tab_out INDEX sy-tabix.
    please help
    thanks in advanced.

    hi help yar i m totaly new for this
    i m pasting whole code here just see yar and where u changing please hight light that things
    thanks yar
    PROGRAM zfisp0001.
    *& Subroutine pool   ZFISP0001                                         *
    *& Author: Rakesh Rao on 01.04.05                                      *
    *& Modified by: Rakesh Rao on 15.07.2005                               *
    *& Description: This subroutine pool is called from Check and Payment  *
    *&              Advice SAPScripts                                      *
    TABLES: itcsy.
    TYPES: BEGIN OF t_itcsy.
            INCLUDE STRUCTURE itcsy.
    TYPES: END OF t_itcsy.
    DATA: tab_in  TYPE STANDARD TABLE OF t_itcsy WITH NON-UNIQUE
           DEFAULT KEY INITIAL SIZE 0.
    DATA: tab_out TYPE STANDARD TABLE OF t_itcsy WITH NON-UNIQUE
           DEFAULT KEY INITIAL SIZE 0.
    DATA: d_count(3) VALUE 0,
          d_netamt_tot TYPE p DECIMALS 2,
          d_tdsamt_tot TYPE p DECIMALS 2,
          d_grossamt_tot TYPE p DECIMALS 2,
          d_tdsamt TYPE p DECIMALS 2.
    DATA flag.
    DATA: bschl LIKE bseg-bschl.
    DATA: shkzg LIKE bseg-shkzg.
    clear: d_count,d_netamt_tot.
    *&      Form  ZPAYMENT
          text
    -->  p1        text
    <--  p2        text
    FORM zpayment TABLES tab_in STRUCTURE itcsy
                         tab_out STRUCTURE itcsy.
      tables : bsak.
      TYPES: imis_type_c20(20) TYPE c,
             imis_type_c10(10) TYPE c.
      DATA: l_intern TYPE imis_type_c20.
      DATA: e_intern TYPE imis_type_c10.
      DATA: i_extern TYPE imis_type_c10.
      DATA: d_belnr(10),
           D_VBLNR(10),
            d_bukrs TYPE bseg-bukrs,
            d_gjahr TYPE bseg-gjahr,
            d_gjahr1 TYPE bseg-gjahr, " 15.07.2005 Rakesh
            d_buzei TYPE bseg-buzei,
            d_augbl TYPE bseg-augbl,
            d_umskz TYPE bseg-umskz,
            d_bschl TYPE bseg-bschl,
            d_bktxt TYPE bkpf-bktxt,
            d_budat(10),
            d_rebzg TYPE bseg-rebzg,
            D_SHKZG TYPE REGUP-SHKZG,
            d_swnes TYPE regud-swnes,
            d_netamt TYPE p DECIMALS 2,
           d_tdsamt TYPE p DECIMALS 2,
            d_discamt TYPE regud-wskto,
            d_gross  TYPE regud-wrbtr.
      DATA: BEGIN OF t_bkpf,
             bukrs TYPE bkpf-bukrs,
             belnr TYPE bkpf-belnr,
             gjahr TYPE bkpf-gjahr,
             budat TYPE bkpf-budat,
             bktxt TYPE bkpf-bktxt,
             xblnr TYPE bkpf-xblnr,
            END OF t_bkpf.
      DATA: BEGIN OF t_bseg,
             bukrs TYPE bseg-bukrs,
             belnr TYPE bseg-belnr,
             gjahr TYPE bseg-gjahr,
             buzei TYPE bseg-buzei,
             umskz TYPE bseg-umskz,
             bschl TYPE bseg-bschl,
             qbshb TYPE bseg-qbshb,
             augbl TYPE bseg-augbl,
             rebzg TYPE bseg-rebzg,
             rebzj TYPE bseg-rebzj,
             sgtxt TYPE bseg-sgtxt,
             xref1 TYPE bseg-xref1,
             ebeln TYPE bseg-ebeln,
             shkzg type bseg-shkzg,
            END OF t_bseg.
      DATA: num VALUE ' ',
            d_result VALUE ' '.
      DATA: d_symbol VALUE '/',
            d_text(11) VALUE 'Payment for'.
      DATA: d_belnr1 LIKE bseg-belnr.
      DATA: wa_payrq TYPE payrq. " 15.07.2005 Rakesh
    18.05.2006
      data : wa_belnr like bseg-belnr,wa_augbl like bseg-augbl.
    18.05.2006
    06.09.2006
      data : d_other type p decimals 2.
    Read incoming data
    *break-point.
    *zpayment.
      CLEAR: d_belnr,d_bukrs,d_gjahr,d_result.
      clear d_tdsamt.
    Company code
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUP-BUKRS'.
      d_bukrs = tab_in-value.
    Document number
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUP-BELNR'.
      wa_belnr = d_belnr(10) = tab_in-value(10).
    Posting Key
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUP-BSCHL'.
      d_bschl = tab_in-value.
    Special G/L Indicator
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUP-UMSKZ'.
      d_umskz = tab_in-value.
    Fiscal year
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUP-GJAHR'.
      d_gjahr = tab_in-value.
    <-- 15.07.2005 Rakesh
    Fiscal year1 - For Payment request case
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUD-GJAHR'.
      d_gjahr1 = tab_in-value.
    15.07.2005 Rakesh -->
    Document item
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUP-BUZEI'.
      d_buzei = tab_in-value.
    Discount amount, if any
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUD-WSKTO'.
      REPLACE ALL OCCURRENCES OF ',' IN tab_in-value WITH ' '.
      d_discamt = tab_in-value.
    Gross Amount
    CLEAR tab_in-value.
    READ TABLE tab_in WITH KEY 'REGUD-WRBTR'.
    REPLACE ALL OCCURRENCES OF ',' IN tab_in-value WITH ' '.
    d_gross = tab_in-value.
    Gross Amount
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUD-WNETT'.
      REPLACE ALL OCCURRENCES OF ',' IN tab_in-value WITH ' '.
      d_netamt = tab_in-value.
    Clearing document 18.05.2006
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUP-VBLNR'.
      wa_augbl = tab_in-value.
    DEBIT/CREDIT INDICATOR
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUP-SHKZG'.
      d_SHKZG = tab_in-value(1).
    IF  d_netamt < 0 AND D_SHKZG = 'S'.
         D_NETAMT = D_NETAMT * '-1'.
    ENDIF.
    Check document no.  is clearing document than reset wnett = 0.
    18.05.2006
      select single * from bsak where augbl = wa_augbl
                       and bukrs = d_bukrs and gjahr = d_gjahr1.
      if sy-subrc = 0 and wa_belnr = wa_augbl.
         d_netamt = 0.
      endif.
    18.05.2006
    Check if Down payment request
      IF d_bschl = '39'.
    This line item is not considered
        d_result = 'X'.
      ELSE.
    Check if Down payment
        IF d_bschl = '29'
            and wa_augbl = wa_belnr.  "18.05.2006
          IF d_umskz EQ 'A'
          OR d_umskz EQ 'B'
          OR d_umskz EQ 'I'
          OR d_umskz EQ 'M'
          OR d_umskz EQ 'D'.
    Put Document Number of the Payment Document value to 'd_belnr'
            CLEAR tab_in-value.
            READ TABLE tab_in WITH KEY 'REGUP-VBLNR'.
            d_belnr = tab_in-value.
          ENDIF.
        ENDIF.
    <--15.07.2005 Rakesh
    Check if Payment request exists in 'payrq'
        CLEAR wa_payrq.
    Convert 'd_belnr' to 10 digits,if required
        CLEAR: l_intern,e_intern.
        CALL 'CONVERSION_EXIT_ALPHA_INPUT' ID 'INPUT'  FIELD d_belnr
                                           ID 'OUTPUT' FIELD l_intern.
        e_intern = l_intern+10.
        d_belnr1 = d_belnr.
        CLEAR d_belnr.
        d_belnr  = e_intern.
        SELECT SINGLE keyno augbl FROM payrq
         INTO CORRESPONDING FIELDS OF wa_payrq
          WHERE keyno = d_belnr.
        IF sy-subrc = 0. " Yes
    Take clearing document which is the required accounting document
            d_belnr = wa_payrq-augbl.
    Convert 'd_belnr' to 10 digits,if required
          CLEAR: l_intern,e_intern.
          CALL 'CONVERSION_EXIT_ALPHA_INPUT' ID 'INPUT'  FIELD d_belnr
                                             ID 'OUTPUT' FIELD l_intern.
          e_intern = l_intern+10.
          CLEAR d_belnr.
          d_belnr  = e_intern.
    Assign 'd_gjahr1' to 'd_gjahr' as this is relevant here.
          d_gjahr = d_gjahr1. " 15.07.2005 Rakesh
    Get BSEG data
          SELECT SINGLE bukrs belnr gjahr buzei augbl rebzg rebzj
                        sgtxt qbshb umskz bschl xref1 ebeln
           FROM bseg INTO CORRESPONDING FIELDS OF t_bseg
            WHERE bukrs EQ d_bukrs
              AND belnr EQ d_belnr
              AND gjahr EQ d_gjahr
           AND buzei EQ d_buzei      " not relevant
           AND bschl EQ '25'           " Posting key - Outgoing payment
              AND koart EQ 'S'           " G/L accounts
              AND shkzg EQ 'S'.          " Debit
        ELSE. " No
    For all other cases, we use this final logic, even though we have
    taken ‘d_belnr’ value from accounting doc no., in some earlier cases.
    Put document number of the payment document(vblnr) value to 'd_belnr',
        IF d_bschl = '29'
            and wa_augbl <> wa_belnr.  "18.05.2006
          IF d_umskz EQ 'A'
            OR d_umskz EQ 'B'
            OR d_umskz EQ 'I'
            OR d_umskz EQ 'M'
            OR d_umskz EQ 'D'.
         else.
          CLEAR tab_in-value.
          READ TABLE tab_in WITH KEY 'REGUP-VBLNR'.
          d_belnr = tab_in-value.
         endif.
       else.
          CLEAR tab_in-value.
          READ TABLE tab_in WITH KEY 'REGUP-VBLNR'.
          d_belnr = tab_in-value.
       endif.
    -->15.07.2005
    Convert 'd_belnr' to 10 digits,if required
          CLEAR: l_intern,e_intern.
          CALL 'CONVERSION_EXIT_ALPHA_INPUT' ID 'INPUT'  FIELD d_belnr
                                             ID 'OUTPUT' FIELD l_intern.
          e_intern = l_intern+10.
          CLEAR d_belnr.
          d_belnr  = e_intern.
    Get BSEG data
          SELECT SINGLE bukrs belnr gjahr buzei augbl rebzg rebzj
                        sgtxt qbshb umskz bschl xref1 ebeln shkzg
           FROM bseg INTO CORRESPONDING FIELDS OF t_bseg
            WHERE bukrs EQ d_bukrs
              AND belnr EQ d_belnr
              AND gjahr EQ d_gjahr1
    "changed by Bharat 15.04.2006 - d_gjahr1 contains payment doc fiscal yea
    "r and d_gjahr contains invoice fiscal year
         AND buzei EQ d_buzei      "amisha 10-10-2005
         AND bschl EQ '25'           " Posting key - Outgoing payment
              AND shkzg EQ 'S'       "added by Bharat 17.04.2006
              AND ( koart EQ 'K' OR koart EQ 'D').
    <--15.07.2005 Rakesh
    18.05.2006
    in clearing document payment advice not consider TDS amount of
    payment document
         if wa_belnr <> wa_augbl and d_shkzg = 'S'.
            t_bseg-qbshb = t_bseg-qbshb * '-1'.
            d_netamt = d_netamt + t_bseg-qbshb.
            t_bseg-qbshb = 0.
         endif.
    18.05.2006
        ENDIF.
    -->15.07.2005
    Get corresponding BKPF data
    If Down payment
        IF d_bschl = '29'.
          IF d_umskz EQ 'A'
          OR d_umskz EQ 'B'
          OR d_umskz EQ 'I'
          OR d_umskz EQ 'M'
          OR d_umskz EQ 'D'.
            SELECT SINGLE bukrs belnr gjahr budat bktxt xblnr
             FROM bkpf INTO CORRESPONDING FIELDS OF t_bkpf
              WHERE bukrs EQ d_bukrs
                AND belnr EQ d_belnr
                AND gjahr EQ d_gjahr1.
    "changed by Bharat 15.04.2006 - d_gjahr1 contains payment doc fiscal yea
    "r and d_gjahr contains invoice fiscal year
          ENDIF.
        ELSE.
    If Partial payment/On-account payment
          IF t_bseg-augbl IS INITIAL.
    On-Account case
         IF t_bseg-augbl IS INITIAL.
            IF t_bseg-rebzg IS INITIAL.
              t_bseg-rebzg = t_bseg-belnr.   " Payment Document Number
              t_bseg-rebzj = t_bseg-gjahr.   " Fiscal year
            ENDIF.
         ENDIF.
            SELECT SINGLE bukrs belnr gjahr budat bktxt xblnr
             FROM bkpf INTO CORRESPONDING FIELDS OF t_bkpf
              WHERE bukrs EQ t_bseg-bukrs
                AND belnr EQ t_bseg-rebzg
                AND gjahr EQ t_bseg-rebzj.
          ELSE.
    FULL PAYMENT with Discount
           clear d_tdsamt.
    Following code added for GSPL by bharat06092006
    if d_bukrs eq 'GSPL'.
    DATA : V_TEXT(20) TYPE C.
        V_TEXT = 'W%'.
        SELECT SINGLE wrbtr FROM bseg
               INTO d_tdsamt
               WHERE bukrs EQ d_bukrs  AND
                     belnr EQ d_belnr1 AND
                     gjahr EQ d_gjahr  AND         " Added by bharat on 10-04-2006 fiscal year
                     bschl EQ '50'     AND
                     KTOSL EQ 'WIT'    AND
                     QSSKZ NOT LIKE V_TEXT.
        SELECT single wrbtr FROM bseg
           INTO d_other
           WHERE bukrs EQ d_bukrs  AND
                 belnr EQ d_belnr1 AND
                 gjahr EQ d_gjahr  AND         " Added by bharat on 10-04-2006 fiscal year
                 bschl EQ '50'     AND
                 KTOSL EQ 'WIT'    AND
                 QSSKZ LIKE V_TEXT.
    ELSE.
    Added by bharat 06.09.2006
            SELECT SINGLE wrbtr
             FROM bseg INTO d_tdsamt
              WHERE bukrs EQ d_bukrs
                AND belnr EQ d_belnr1
                AND gjahr EQ d_gjahr
                " Added by bharat on 10-04-2006 fiscal year
                AND bschl EQ '50' AND KTOSL EQ 'WIT'.
    ENDIF.
            SELECT SINGLE bukrs belnr gjahr budat bktxt xblnr
             FROM bkpf INTO CORRESPONDING FIELDS OF t_bkpf
              WHERE bukrs EQ d_bukrs
                AND belnr EQ d_belnr
                AND gjahr EQ d_gjahr1.
    "changed by Bharat 15.04.2006 - d_gjahr1 contains payment doc fiscal yea
    "r and d_gjahr contains invoice fiscal year
           tab_in-value
    *d_tdsamt_tot
          ENDIF.
        ENDIF.
        IF sy-subrc = 0.
    Sr. no. for Line items
          d_count = d_count + 1.
        ELSE.
    Else, this line item is not considered
          d_result = 'X'.
        ENDIF.
      ENDIF. " if d_bschl = '39'
    Pass the output to the outgoing table 'tab_out', if 'd_result' is not
    *set.
      IF d_result = ' '.
    Line count
        CLEAR: tab_out-value,tab_out-name.
        READ TABLE tab_out WITH KEY 'COUNT'.
        tab_out-value = d_count.
        MODIFY tab_out INDEX sy-tabix.
    Result flag
        CLEAR: tab_out-value,tab_out-name.
        READ TABLE tab_out WITH KEY 'RESULT1'.
        tab_out-value = d_result.
        MODIFY tab_out INDEX sy-tabix.
    Clearing document
        CLEAR: tab_out-value,tab_out-name.
        READ TABLE tab_out WITH KEY 'AUGBL'.
        tab_out-value = t_bseg-augbl.
        MODIFY tab_out INDEX sy-tabix.
        IF d_bschl <> '29'.
    On-Account case
          IF t_bseg-augbl IS INITIAL.
            IF t_bseg-rebzg IS INITIAL.
              t_bseg-rebzg = t_bseg-belnr.   " Payment Document Number
            ENDIF.
          ENDIF.
        ELSE.
    Payment document request
          IF NOT t_bseg-ebeln IS INITIAL. " First preference
            t_bseg-rebzg = t_bseg-ebeln.
          ELSE.
            t_bseg-rebzg = d_belnr.
          ENDIF.
        ENDIF.
    Number of the Invoice the Transaction Belongs to
        CLEAR: tab_out-value,tab_out-name.
        READ TABLE tab_out WITH KEY 'REBZG'.
        SHIFT t_bseg-rebzg LEFT DELETING LEADING num.
        tab_out-value = t_bseg-rebzg.
        MODIFY tab_out INDEX sy-tabix.
    Document number - check use??
       CLEAR: tab_out-value,tab_out-name.
       READ TABLE tab_out WITH KEY 'BELNR'.
       tab_out-value = d_belnr.                   " check!!
       MODIFY tab_out INDEX sy-tabix.
    Net amount
       d_netamt = d_gross - d_discamt - t_bseg-qbshb.
    Gross amount
        d_gross = d_netamt + d_tdsamt + t_bseg-qbshb.
        CLEAR: tab_out-value,tab_out-name.
        READ TABLE tab_out WITH KEY 'NETAMT'.
        tab_out-value = d_netamt.
        SHIFT tab_out-value LEFT DELETING LEADING space.
        MODIFY tab_out INDEX sy-tabix.
    TDS Amount
        IF t_bseg-qbshb IS INITIAL.
          CLEAR: tab_out-value,tab_out-name.
          READ TABLE tab_out WITH KEY 'TDSAMT'.
          tab_out-value = d_tdsamt.
          SHIFT tab_out-value LEFT DELETING LEADING space.
          MODIFY tab_out INDEX sy-tabix.
    Added by bharat 06.09.2006
         CLEAR: tab_out-value,tab_out-name.
         READ TABLE tab_out WITH KEY 'D_OTHER'.
         tab_out-value = d_other.
         SHIFT tab_out-value LEFT DELETING LEADING space.
         MODIFY tab_out INDEX sy-tabix.
    Added by bharat 06.09.2006
        ELSE.
          CLEAR: tab_out-value,tab_out-name.
          READ TABLE tab_out WITH KEY 'TDSAMT'.
          tab_out-value = t_bseg-qbshb.
          SHIFT tab_out-value LEFT DELETING LEADING space.
          MODIFY tab_out INDEX sy-tabix.
        ENDIF.
    *Calculate Total Net amount & TDS amount which is stored in Global
    *memory and accessed later
    from 'FORM Z_TOTAL_AMT'
        d_netamt_tot = d_netamt_tot + d_netamt.
        d_grossamt_tot = d_grossamt_tot + d_gross.
        d_tdsamt_tot = d_tdsamt_tot + t_bseg-qbshb + d_tdsamt + d_other.
    CLEAR: tab_OUT-value,tab_out-name.
    READ TABLE tab_OUT WITH KEY 'NETAMT_TOT'.
    tab_out-value = d_netamt_tot.
    shift tab_out-value left deleting leading space.
    MODIFY tab_out INDEX sy-tabix.
    Document Header text
        CLEAR: tab_out-value,tab_out-name.
        READ TABLE tab_out WITH KEY 'BKTXT'.
        IF d_bschl = '29'.
          tab_out-value = t_bseg-sgtxt.    " for down payment request
        ELSE.
          tab_out-value = t_bkpf-bktxt.
        ENDIF.
        MODIFY tab_out INDEX sy-tabix.
    Reference Document Number - Header
        CLEAR: tab_out-value,tab_out-name.
        READ TABLE tab_out WITH KEY 'XBLNR'.
        IF d_bschl = '29'.
          tab_out-value = t_bseg-xref1.   " for down payment request
        ELSE.
          tab_out-value = t_bkpf-xblnr.
        ENDIF.
        MODIFY tab_out INDEX sy-tabix.
    Symbol '/'
        CLEAR: tab_out-value,tab_out-name.
        READ TABLE tab_out WITH KEY 'D_SYMBOL'.
        tab_out-value = d_symbol.
        MODIFY tab_out INDEX sy-tabix.
    Text 'Payment for'
       CLEAR: tab_out-value,tab_out-name.
       READ TABLE tab_out WITH KEY 'D_TEXT'.
       tab_out-value = d_text.
       MODIFY tab_out INDEX sy-tabix.
      CLEAR: tab_out-value,tab_out-name.
        READ TABLE tab_out WITH KEY 'D_TEXT'.
        tab_out-value = d_text.
        tab_out-xblnr = t_bkpf-xblnr.
        MODIFY tab_out by bkpf-xblnr INDEX sy-tabix.
    Posting date
        CLEAR d_budat.
        CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
          EXPORTING
            date_internal            = t_bkpf-budat
          IMPORTING
            date_external            = d_budat
          EXCEPTIONS
            date_internal_is_invalid = 1
            OTHERS                   = 2.
        IF sy-subrc <> 0.
         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
        CLEAR: tab_out-value,tab_out-name.
        READ TABLE tab_out WITH KEY 'BUDAT'.
        tab_out-value = d_budat.
        MODIFY tab_out INDEX sy-tabix.
      ELSE.
    Result flag
        CLEAR: tab_out-value,tab_out-name.
        READ TABLE tab_out WITH KEY 'RESULT1'.
        tab_out-value = d_result.
        MODIFY tab_out INDEX sy-tabix.
      ENDIF.
    d_gross = d_netamt + d_tdsamt + t_bseg-qbshb.
      CLEAR: tab_out-value,tab_out-name.
      READ TABLE tab_out WITH KEY 'GROSSAMT'.
      tab_out-value = d_gross.
      SHIFT tab_out-value LEFT DELETING LEADING space.
      MODIFY tab_out INDEX sy-tabix.
    ENDFORM.                    " ZPAYMENT
    *&      Form  zamtwords
          text - If only 'Net Amount' is required
    -->  p1        text
    <--  p2        text
    FORM zamtwords TABLES tab_in  STRUCTURE itcsy
                          tab_out STRUCTURE itcsy.
      DATA: d_swnet  TYPE regud-swnes,  " take character format type
            d_swnet1 TYPE bseg-dmbtr.
           d_words(160),
           d_words1(80),
           d_words2(80).
    <-- 21.05.2005
      DATA: d_words(160),
            d_words1(80) TYPE c,
            d_words2(80) TYPE c.
      DATA: len TYPE i.
    <-- 21.05.2005
    *zamtwords
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUD-SWNET'.
      d_swnet = tab_in-value.
    REPLACE ALL OCCURRENCES OF '*' IN d_swnes WITH ' '.
      REPLACE ALL OCCURRENCES OF ',' IN d_swnet WITH ' '.
      d_swnet1 = d_swnet.
      CLEAR d_swnet.
      PERFORM z_conv_amt USING d_swnet1 CHANGING d_swnet.
    Return 'SWNET1' without commas
      CLEAR: tab_out-value,tab_out-name.
      READ TABLE tab_out WITH KEY 'SWNET1'.
    d_swnet = d_swnet1.
      tab_out-value = d_swnet.
      MODIFY tab_out INDEX sy-tabix.
    Amount in Indian currency format
      CALL FUNCTION 'Z_SPELL_AMOUNT_INR'
        EXPORTING
          amount     = d_swnet1
        IMPORTING
          rupees_str = d_words.
    Adjust 'd_words' left aligned
      SHIFT d_words LEFT DELETING LEADING space.
    <-- 21.05.2005
    Split 'd_words' into 'd_words1' and 'd_words2'
    since 'DEFINE' in SAPScript displays maximum 80 characters
    d_words1 = d_words(80).
    d_words2 = d_words+80(80).
    *CALL FUNCTION 'C147_STRING_SPLIT_AT_POSITION'
    EXPORTING
       i_string         = d_words
       i_position       = 80
    IMPORTING
       E_HEAD           = d_words1
       E_TAIL           = d_words2.
      len = STRLEN( d_words ).
    Only 80 characters can be passed to one SAPScript symbol
    Split 'd_words' into 'd_words1' and 'd_words2'
    since 'DEFINE' in SAPScript displays maximum 80 characters
    Check if string split is required
      IF len > 80.
        d_words1 = d_words(80).                                 " First 80
        d_words2 = d_words+80(80).                              " Next 80
    Introduce an initial space in 'd_words2' if 80th character in
    'd_words1' is space, as this space is not considered when 'd_words1'
    value is passed to the SAPScript, since we need proper spacing
    between 'd_words1' and 'd_words2' in the Cheque layout.
        IF d_words1+79(1) = ' '.
          SHIFT d_words2 RIGHT BY 1 PLACES.
        ENDIF.
      ELSE.
        d_words1 = d_words.
        d_words2 = space.
      ENDIF.
    21.05.2005 -->
    Amount in words1
      CLEAR: tab_out-value,tab_out-name.
      READ TABLE tab_out WITH KEY 'WORDS'.
      tab_out-value = d_words1.
      MODIFY tab_out INDEX sy-tabix.
    Amount in words2
      CLEAR: tab_out-value,tab_out-name.
      READ TABLE tab_out WITH KEY 'WORDS1'.
      tab_out-value = d_words2.
      MODIFY tab_out INDEX sy-tabix.
    ENDFORM.                    " zamtwords
    *&      Form  z_address
          text
    -->  p1        text
    <--  p2        text
    FORM z_address TABLES tab_in  STRUCTURE itcsy
                          tab_out STRUCTURE itcsy.
      DATA d_bukrs TYPE bseg-bukrs.
      DATA: t_t001 TYPE t001,
            t_adrc TYPE adrc.
      CLEAR: tab_in-value,t_t001,t_adrc.
      READ TABLE tab_in WITH KEY 'REGUP-BUKRS'.
      d_bukrs = tab_in-value.
      CALL FUNCTION 'K_READ_T001'
        EXPORTING
          i_bukrs   = d_bukrs
        IMPORTING
          e_t001    = t_t001
        EXCEPTIONS
          not_found = 1
          OTHERS    = 2.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ELSE.
        CALL FUNCTION 'RTP_US_DB_ADRC_READ'
          EXPORTING
            i_address_number       = t_t001-adrnr
      I_NATION               = ' '
      I_READ_DB              =
         IMPORTING
            e_adrc                 = t_adrc
         EXCEPTIONS
           not_found              = 1
           OTHERS                 = 2
        IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
        CLEAR: tab_out-value,tab_out-name.
        READ TABLE tab_out WITH KEY 'ADRC-NAME1'.
        tab_out-value = t_adrc-name1.
        MODIFY tab_out INDEX sy-tabix.
        CLEAR: tab_out-value,tab_out-name.
        READ TABLE tab_out WITH KEY 'ADRC-STREET'.
        tab_out-value = t_adrc-street.
        MODIFY tab_out INDEX sy-tabix.
        CLEAR: tab_out-value,tab_out-name.
        READ TABLE tab_out WITH KEY 'ADRC-CITY1'.
        tab_out-value = t_adrc-city1.
        MODIFY tab_out INDEX sy-tabix.
        CLEAR: tab_out-value,tab_out-name.
        READ TABLE tab_out WITH KEY 'ADRC-POST_CODE1'.
        tab_out-value = t_adrc-post_code1.
        MODIFY tab_out INDEX sy-tabix.
      ENDIF.
    ENDFORM.                    " z_address
    *&      Form  z_total_amt
          text
    -->  p1        text
    <--  p2        text
    FORM z_total_amt TABLES tab_in STRUCTURE itcsy
                          tab_out STRUCTURE itcsy.
      CLEAR: tab_out-value,tab_out-name.
      READ TABLE tab_out WITH KEY 'NETAMT_TOT'.
      tab_out-value = d_netamt_tot.
      SHIFT tab_out-value LEFT DELETING LEADING space.
      MODIFY tab_out INDEX sy-tabix.
      CLEAR: tab_out-value,tab_out-name.
      READ TABLE tab_out WITH KEY 'TDSAMT_TOT'.
      tab_out-value = d_tdsamt_tot.
      SHIFT tab_out-value LEFT DELETING LEADING space.
      MODIFY tab_out INDEX sy-tabix.
      CLEAR: tab_out-value,tab_out-name.
      READ TABLE tab_out WITH KEY 'GROSSAMT_TOT'.
      tab_out-value = d_grossamt_tot.
      SHIFT tab_out-value LEFT DELETING LEADING space.
      MODIFY tab_out INDEX sy-tabix.
    ENDFORM.                    " z_total_amt
    *&      Form  Z_NET_AMT
          text
         -->TAB_IN     text
         -->TAB_OUT    text
    FORM z_net_amt TABLES tab_in  STRUCTURE itcsy
                          tab_out STRUCTURE itcsy.
      TYPES: imis_type_c20(20) TYPE c,
             imis_type_c10(10) TYPE c.
      DATA: l_intern TYPE imis_type_c20.
      DATA: e_intern TYPE imis_type_c10.
      DATA: i_extern TYPE imis_type_c10.
      DATA: d_belnr(10),
            d_bukrs TYPE bseg-bukrs,
            d_gjahr TYPE bseg-gjahr,
            d_umskz TYPE bseg-umskz,
            d_bschl TYPE bseg-bschl,
            d_dmbtr1 TYPE bseg-dmbtr,
            d_dmbtr(17). "prb16052006
           d_dmbtr1 like regud-swnes. "prb16052006
      DATA d_amt TYPE char18.
      DATA: BEGIN OF t_bseg OCCURS 10,
             bukrs TYPE bseg-bukrs,
             belnr TYPE bseg-belnr,
             gjahr TYPE bseg-gjahr,
             buzei TYPE bseg-buzei,
             dmbtr TYPE bseg-dmbtr,
             wrbtr TYPE bseg-wrbtr,
            umskz TYPE bseg-umskz,
             bschl TYPE bseg-bschl,
             qbshb TYPE bseg-qbshb,
             NEbtR TYPE BSEG-nebtr, "prb13052006
            END OF t_bseg.
    <-- 21.05.2005
      DATA: d_words(160),
            d_words1(80) TYPE c,
            d_words2(80) TYPE c.
      DATA: len TYPE i.
    <-- 21.05.2005
      DATA wa_payrq TYPE payrq. " 15.07.2005 Rakesh
    Read incoming data
      CLEAR: d_belnr,d_bukrs,d_gjahr.
    Company code
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUP-BUKRS'.
      d_bukrs = tab_in-value.
    Document number
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUP-BELNR'.
      d_belnr(10) = tab_in-value(10).
    Posting Key
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUP-BSCHL'.
      d_bschl = tab_in-value.
    Special G/L Indicator
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUP-UMSKZ'.
      d_umskz = tab_in-value.
    Fiscal Year
      CLEAR tab_in-value.
      READ TABLE tab_in WITH KEY 'REGUD-GJAHR'.  " Note
      CHECK sy-subrc = 0.
      d_gjahr = tab_in-value.
    Check if Down payment
      IF d_bschl = '29'.
        IF d_umskz EQ 'A'
        OR d_umskz EQ 'B'
        OR d_umskz EQ 'I'
        OR d_umskz EQ 'M'
        OR d_umskz EQ 'D'.
    Put Document Number of the Payment Document value to 'd_belnr'
          CLEAR tab_in-value.
          READ TABLE tab_in WITH KEY 'REGUP-VBLNR'.
          d_belnr = tab_in-value.
        ENDIF.
      ENDIF.
    Check if Down payment request
      IF d_bschl = '39'.
    Put Document Number of the Payment Document value to 'd_belnr'
        CLEAR tab_in-value.
        READ TABLE tab_in WITH KEY 'REGUP-VBLNR'.
        d_belnr = tab_in-value.
      ENDIF.
    <--15.07.2005 Rakesh
    Check if Payment request exists in 'payrq'
      CLEAR wa_payrq.
    Convert 'd_belnr' to 10 digits,if required
      CLEAR: l_intern,e_intern.
      CALL 'CONVERSION_EXIT_ALPHA_INPUT' ID 'INPUT'  FIELD d_belnr
                                         ID 'OUTPUT' FIELD l_intern.
      e_intern = l_intern+10.
      CLEAR d_belnr.
      d_belnr  = e_intern.
      SELECT SINGLE keyno augbl FROM payrq
       INTO CORRESPONDING FIELDS OF wa_payrq
        WHERE keyno = d_belnr.
      IF sy-subrc = 0. " Yes
    Take clearing document which is the required accounting document
        d_belnr = wa_payrq-augbl.
    Convert 'd_belnr' to 10 digits,if required
        CLEAR: l_intern,e_intern.
        CALL 'CONVERSION_EXIT_ALPHA_INPUT' ID 'INPUT'  FIELD d_belnr
                                           ID 'OUTPUT' FIELD l_intern.
        e_intern = l_intern+10.
        CLEAR d_belnr.
        d_belnr  = e_intern.
    Get BSEG data
        SELECT bukrs belnr gjahr buzei augbl rebzg rebzj sgtxt dmbtr wrbtr
        qbshb nebtr
         FROM bseg INTO CORRESPONDING FIELDS OF TABLE t_bseg
          WHERE bukrs EQ d_bukrs
            AND belnr EQ d_belnr
            AND gjahr EQ d_gjahr
         AND buzei EQ d_buzei
         AND bschl EQ '25'
              AND koart EQ 'S'           " G/L accounts
              AND shkzg EQ 'S'.          " Debit
      ELSE. " No
    For all other cases, we use this final logic, even though we have
    taken ‘d_belnr’ value from accounting doc no., in some earlier cases.
    Put document number of the payment document(vblnr) value to 'd_belnr',
        CLEAR tab_in-value.
        READ TABLE tab_in WITH KEY 'REGUP-VBLNR'.
        d_belnr = tab_in-value.
    -->15.07.2005
    Convert 'd_belnr' to 10 digits.
        CLEAR: l_intern,e_intern.
        CALL 'CONVERSION_EXIT_ALPHA_INPUT' ID 'INPUT'  FIELD d_belnr
                                           ID 'OUTPUT' FIELD l_intern.
        e_intern = l_intern+10.
        CLEAR d_belnr.
        d_belnr  = e_intern.
    *BSEG - PARTIAL PAYMT/FULL PAYMT WT DISC - Get Total Amount without Bank
    *charges
        SELECT bukrs belnr gjahr buzei augbl rebzg rebzj sgtxt dmbtr wrbtr
        qbshb bschl NEBTR
         FROM bseg INTO CORRESPONDING FIELDS OF TABLE t_bseg
          WHERE bukrs EQ d_bukrs
            AND belnr EQ d_belnr
            AND gjahr EQ d_gjahr
         AND buzei EQ d_buzei
         AND bschl EQ '25'
            AND ( koart EQ 'K' OR koart EQ 'D' ).
    <--15.07.2005 Rakesh
      ENDIF.
    -->20.10.2005 By Yogesh.
      CLEAR d_dmbtr.
    IF sy-subrc = 0.
      LOOP AT t_bseg.
       d_dmbtr = d_dmbtr + t_bseg-dmbtr - t_bseg-qbshb.
        SELECT SINGLE shkzg INTO (shkzg) FROM tbsl
        WHERE bschl = t_bseg-bschl.
    *BREAK-POINT.
    *******prb13052
       IF shkzg = 'S'.
         d_dmbtr = d_dmbtr + t_bseg-wrbtr - t_bseg-qbshb.
       ELSEIF shkzg = 'H'.
         d_dmbtr = d_dmbtr - t_bseg-wrbtr - t_bseg-qbshb.
       ENDIF.
       IF shkzg = 'S'.
         d_dmbtr = d_dmbtr + t_bseg-nebtr." - t_bseg-qbshb.
       ELSEIF shkzg = 'H'.
         if t_bseg-nebtr <> ''.
         d_dmbtr = d_dmbtr - t_bseg-nebtr." - t_bseg-qbshb.
         else.
         d_dmbtr = d_dmbtr - t_bseg-wrbtr." - t_bseg-qbshb.
         endif.
       ENDIF.
    *tables: reguh, payr.
      select single * from reguh where zbukr = d_bukrs
                           and vblnr = d_belnr
                           and LAUFD+6(4) = d_gjahr.
    *select single * from payr where zbukr = d_bukrs
    *and vblnr = d_belnr
    *and hbkid = reguh-hbkid
    *and hktid = reguh-hktid.
    *d_dmbtr = payr-rwbtr.
    *if d_dmbtr < 0.
    *d_dmbtr = d_dmbtr * ( -1 ).
    *endif.
    CLEAR tab_in-value.
        READ TABLE tab_in WITH KEY 'REGUD-SWNES'.
        d_DMBTR  =  tab_in-value.
    translate d_dmbtr using '* '.
    translate d_dmbtr using ', '.
    condense d_dmbtr no-gaps.
    d_dmbtr1 = d_dmbtr.
    *******prb13052
      ENDLOOP.
      PERFORM z_conv_amt USING d_dmbtr CHANGING d_amt.
    *Pass the Net Amount output to the outgoing table tab_out-name =
    *'NETAMT_TOT'.
      CLEAR: tab_out-value,tab_out-name.
      READ TABLE tab_out WITH KEY 'NETAMT_TOT'.
      tab_out-value = d_amt.
      " For inserting '*' ahead of value
    SHIFT tab_out-value LEFT DELETING LEADING space.  """"????IMP
      MODIFY tab_out INDEX sy-tabix.
    Get the Amount in words for Indian currency
    Can also use the FM 'HR_IN_CHG_INR_WRDS'
      CALL FUNCTION 'Z_SPELL_AMOUNT_INR'
        EXPORTING
          amount     = d_dmbtr1
        IMPORTING
          rupees_str = d_words.
    Shift left since above Function Module introduces an initial space
      SHIFT d_words LEFT DELETING LEADING space.
    <-- 21.05.2005
    *CALL FUNCTION 'C147_STRING_SPLIT_AT_POSITION'
    EXPORTING
       i_string         = d_words
       i_position       = 80
    IMPORTING
       E_HEAD           = d_words1
       E_TAIL           = d_words2.
      len = STRLEN( d_words ).
    Only 80 characters can be passed to one SAPScript symbol
    Split 'd_words' into 'd_words1' and 'd_words2'
    since 'DEFINE' in SAPScript displays maximum 80 charact

  • How the below query is working

    Hi,
    I am newly joined in the group.
    the emp table has 5 rows as below
    100     ram     10000.00     10
    200     kumar     15000.00     10
    300     william     20000.00     10
    400     ravi     25000.00     10
    500     victor     30000.00     10
    i execute the below query
    select ename,sal from emp_test where case when sal < 10000 then sal + 1000
    when sal < 20000 then sal + 2000
    else sal
    end < 20000
    it gives the below output
    ram     10000.00
    kumar     15000.00
    How the above query is working?
    Please explain. thanks in advance

    If you want it to show the changed salary, it has to be in the select line not the where:
    select ename,
           (case when sal < 10000 then sal + 1000
               when sal < 20000 then sal + 2000
               else sal
            end) sal from emp_test
    where  case when sal < 10000 then sal + 1000
               when sal < 20000 then sal + 2000
               else sal
            end < 20000

  • Need Help on below Query.

    Hi All,
    Need Help on below Query.
    Consider,
    "test9" Table Data in COLUMN "Name" AS
    Name
    =====
    'a'
    'b'
    'c'
    'd'
    'e'
    I am writing a query as :
    SELECT * FROM test9 WHERE Name IN ('a','b','c','d','e','f','g')
    I want result set as , It should show data as -
    'f'
    'g'
    i.e. data which does not exists in the table and which is give in in clause
    Is it possible in a single query.

    You can put the data that is to be checked for into a table instead or an inline view, for example:
    with t as
    (select 'a' as c1 from dual
    union all
    select 'b' from dual
    union all
    select 'c' from dual
    union all
    select 'd' from dual
    union all
    select 'e' from dual)
    select c1 from (select 'a' as c1 from dual
    union all
    select 'b' from dual
    union all
    select 'c' from dual
    union all
    select 'd' from dual
    union all
    select 'e' from dual
    union all
    select 'f' from dual
    union all
    select 'g' from dual)
    minus
    select c1 from t
    C
    f
    g
    2 rows selected.

Maybe you are looking for

  • Payment medium Program RFFOBR

    Hi people, We need to create the variant to "Payment medium Program RFFOBR". Some time ago we worked with the transaction SE38, put the program: RFFOBR_U and create our Variants. But now, this transaction is considered critical in our company and it

  • Import and Open File options freeze up

    When I click any Import option (Word, HTM, merge XPJ), the browser window does not open to allow me to select files.  This happens on ALL import options. The RoboHelp screen freezes up and I get an error sound when I click any other option.  This req

  • Help in using JSP: Urgent As Project dues soon

    Hello Guys, i am new here. I got some problems using jsp. My main project is about a webpage where there is login and password for users. But, I can GO to a certain JSP page without LOGINING in. For example, i got a jsp page for customer to buy and s

  • Blank thumbnails even after library repairing

    Photos works flawlessly on my 2013 MacBook Pro but doesn't work on my 2009 iMac 27". All the thumbnails remain blank after multiple library repairing and restarting (app and computer). I used the Option + Command + App Launching to access the library

  • I have a 500gb running my computer and want to upgrade to a 1000gb how can i do this?

    I would like to upgrade my 500 gb to a 1000gb HD which will run my apple Mac pro 2009 Tower. Iam confident in changing HDs but wondering how to put all the operating software onto a new HD. Many thanks, Mac