Logic needed in pl/sql

Hello

I need help to implement this logic. in pl/sql.

My logic is like this:

I have a column in a table of data with some historical values (could be 3... It may be 10).

Of these, I have to take 5 values every time there is a change in the values under that column... and fill 5 fixed a target table columns.

For example:

Historical_column_value (in some order):

-------------------------------------

A

B

B

C

D

D

D

B

F

G

.. and so on...

Target output column value:

------------------------------------

Col1 Col2 Col3 Col4 Col5

-----     ------       ------     ------    -------

A             B          C            D        B

Here's so historical data have no limits... but it's only 5 columns in the target table.

(Note: here I can not use the "distinct" clause in sql.)

Therefore, logic is necessary to implement this.

Thank you

Bogoss

Just replace the where condition

WHERE LAG1! = HISTORICAL_COLUMN_VALUE

with thiis

WHERE nvl(LAG1,0)! = nvl(HISTORICAL_COLUMN_VALUE,0)

Tags: Database

Similar Questions

  • I use Windows Vista and that you need to download SQL Server 2005 Express Service Pack 4. I get an error code of 64 C. Please tell me what to do?

    I use Windows Vista and that you need to download SQL Server 2005 Express Service Pack 4. I get an error code 64 C help, please.

    Hello

    I suggest you to try the steps below and check if it helps.

    Method 1: Try to reset components to update Windows from the following link, which would help you to install the updates of windows. http://support.Microsoft.com/kb/971058

    Method 2: If the problem persists, then try to set up your computer in a clean boot state, and check to see if the same problem happens.

    By setting your boot system minimum state helps determine if third-party applications or startup items are causing the problem.

    How to troubleshoot a problem by performing a clean boot in Windows Vista or Windows 7:
    http://support.Microsoft.com/kb/929135

    Note: After the boot minimum troubleshooting step, follow step 7 in the link provided to return the computer to a Normal startup mode.

    Method 3: Also try to install the updates manually from the link below.

    http://www.Microsoft.com/download/en/details.aspx?displaylang=en&ID=184

    You can also consult the following link for more information:

    Troubleshoot problems with installing updates.

    http://Windows.Microsoft.com/en-us/Windows-Vista/troubleshoot-problems-with-installing-updates

    Hope this information is useful.

  • Need help for sql logic

    Hi guys,.


    I have the following requirement to fetch a value from the

    database with certain conditions. I'll give u an example of how

    data look like in the database and whaat I expect the result.

    Given in the table look like below

    File_No File_date rating Reac
    100 20100402 (white) (white)
    100 20080321 excellent (empty)
    100 20030610 (blank) 82
    20110501 200 (blank) 28
    20090815 200 (white) (white)
    20081021 300 (white) (white)
    300 20060225 good (empty)
    300 20051220 concern (empty)



    from the above table, I need to apply under logic
    I need choose classification or reactionary who never have the value in the table most recent recording. If most recent record has side or reactionary and previous record.

    IM waiting for given below accordingly for file _No

    100 20080321 excellent (empty)

    100 20030610 (blank) 82

    300 20060225 good (empty)


    Please let me know how to write sql/plsql code? Thanks in advance.

    Maybe (although not giving no expected result seems to follow the logic of obligation) NO TESTS!

    select file_no,file_date,rating,reac,
      from (select file_no,file_date,rating,reac,
                   row_number() over (partition by file_no order by file_date desc) r
              from table_a
             where coalesce(rating,to_char(reac)) is not null
           )
     where r = 1
    

    Concerning

    Etbin

    Edited by: Etbin on 28.8.2011 23:51

    I forgot the habit DO NOT TEST! (it should be because it's almost tomorrow)

  • Need of a logic of creation of SQL query

    Hi Experts,

    Could you please help me get the follwing desired output. Thank you

    Actual data:

    ABC01-02
    XYZ02-03
    PQR78-79
    LMN1-5

    Expected/desired output:

    ABC01
    ABC02
    XYZ02
    XYZ03
    PQR78
    PQR79
    LMN1
    LMN5

    Please let me know if you need additional information. Thanks in advance.

    Concerning
    Ralu
    with data as (
    select 'ABC01-02' s from dual union all
    select 'XYZ02-03' from dual union all
    select 'PQR78-79' from dual union all
    select 'LMN1-5' from dual
    )
    
    select
      regexp_substr(s,'[^[:digit:]]+')
    ||regexp_substr(s,'[[:digit:]]+',1,1)
    s
    from data
    union all
    select
      regexp_substr(s,'[^[:digit:]]+')
    ||regexp_substr(s,'[[:digit:]]+',1,2)
    from data
    order by s
    
    S
    "ABC01"
    "ABC02"
    "LMN1"
    "LMN5"
    "PQR78"
    "PQR79"
    "XYZ02"
    "XYZ03"
    
  • Need help with SQL for the following logic.

    I have a table with 3 columns and the following data:
    DATE NAME S_NO
    1 ABC1 JANUARY 1, 2001
    1 ABC2 JANUARY 10, 2001
    1 ABC3
    1 ABC4
    ABC1 2 1 DECEMBER 2010
    ABC2 2
    2 ABC3 DECEMBER 10, 2010
    2 ABC4 DECEMBER 5, 2010
    3 XYZ1 FEBRUARY 1, 2001
    3 XYZ2 FEBRUARY 2, 2001

    I need to retrieve the value of NAME for each S_NO corresponding to the maximum DATE. In the above example, it will be:
    1 ABC2
    2 ABC3
    3 XYZ2
    /* Formatted on 9/10/2012 2:50:13 PM (QP5 v5.139.911.3011) */
    WITH t AS (SELECT 1 S_NO, 'ABC1' NAME, '1-JAN-2001' dt FROM DUAL
               UNION ALL
               SELECT 1, 'ABC2', ' 10-JAN-2001' FROM DUAL
               UNION ALL
               SELECT 1, 'ABC3', NULL FROM DUAL
               UNION ALL
               SELECT 1, 'ABC4', NULL FROM DUAL
               UNION ALL
               SELECT 2, 'ABC1', '1-DEC-2010' FROM DUAL
               UNION ALL
               SELECT 2, 'ABC2', NULL FROM DUAL
               UNION ALL
               SELECT 2, 'ABC3', '10-DEC-2010' FROM DUAL
               UNION ALL
               SELECT 2, 'ABC4', '5-DEC-2010' FROM DUAL
               UNION ALL
               SELECT 3, 'XYZ1', '1-FEB-2001' FROM DUAL
               UNION ALL
               SELECT 3, 'XYZ2', '2-FEB-2001' FROM DUAL)
    SELECT *
      FROM (SELECT S_NO,
                   name,
                   RANK ()
                   OVER (PARTITION BY s_no
                         ORDER BY TO_DATE (dt, 'dd-mon-yyyy') DESC)
                      rk
              FROM t
             WHERE dt IS NOT NULL)
     WHERE 1 = RK
    
  • Need help with SQL logic to fine tune output screen

    Hi all

    I have the following query:
    select x.area_id
             , x.ORG_id
            , x. product                
            , case when x.param_info_key in (400, 410, 420, 430, 440)
                         then x.new_value
                end as facility_average_price
            , case when x.param_info_key in (660, 670,680,690,700)
                         then x.new_value
                end as royalty_rate_adjustment     
    from
    (
         select d.area_id
                 , d.ORGANIZATION_NUMBER as org_id
                 , d.PARAM_INFO_KEY
                 , case when d.param_info_key in (400, 660)
                                      then 'Gas'
                          when d.param_info_key in (410, 700)  
                                  then 'Ethane' 
                          when d.param_info_key in (420, 680) 
                                  then 'Propane'
                          when d.param_info_key in (430, 690) 
                                  then 'Butane'     
                          when d.param_info_key in (440, 670) 
                                  then 'Pentane'                                                                               
                    end as product
                 , d.new_value
                 , m.CHANGE_DATE_TIME
                 , max(m.CHANGE_DATE_TIME) over(partition by area_id, organization_number,d.param_info_key) max_change_date
         from accruals2.accrual_parm_chng_hist_detail d
               , accruals2.accrual_parm_chng_hist_master m
               , accruals2.accrual_period p
               , accruals2.accrual_param_info i
         where d.PARM_CHNG_HIST_MASTER_KEY = m.PARM_CHNG_HIST_MASTER_KEY
                and m.PERIOD_KEY = p.PERIOD_KEY
                and d.PARAM_INFO_KEY = i.PARAM_INFO_KEY
                and d.param_info_key in (400, 410, 700, 680, 660, 430, 690, 440, 670)
                and area_id = 1013
                and p.ACCOUNTING_DATE = date '2010-04-30'
    ) x
    where x.change_date_time = x.max_change_date     
    order by x.area_id, x.org_id
           , x.product,  x.PARAM_INFO_KEY
    It returns a set of data that looks like this: EDIT - sorry about the way in which the columns are looking below - they match very well when I create the post. How to format the columns and data remain aligned?
    AREA_ID     ORG_ID     PRODUCT     FACILITY_AVERAGE_PRICE                ROYALTY_RATE_ADJUSTMENT
                        
    1013          1            Butane          0.08     
    1013          1            Butane                                             0.0015
    1013          1            Ethane          0.06     
    1013          1            Ethane                                             0.003
    1013          1            Gas               -0.1     
    1013         1             Gas                                                                            0.002
    1013          1           Pentane          0.09     
    1013          1           Pentane                                             0.006
    1013          1           Propane                                             0.007
    Now I want the result should look like this:
    AREA_ID     ORG_ID     PRODUCT     FACILITY_AVERAGE_PRICE         ROYALTY_RATE_ADJUSTMENT
                        
    1013          1            Butane          0.08                              0.0015
    1013          1            Ethane          0.06                              0.003                                   
    1013          1            Gas               -0.1                                             0.002
    1013          1           Pentane          0.09                              0.006                                   
    1013          1           Propane     
    In the past, I got these results by Group on area_id ord_id and the product. Then by adding the facility_average_price and royalty_rate_adjustment. However, this time, I don't want the sum or max or whatever the number is, I want to just display as above. Is it possible to do this?

    Thank you.

    Published by: dgouin on Sep 8, 2010 06:41

    dgouin wrote:
    In the past, I got these results by Group on area_id ord_id and the product. Then by adding the facility_average_price and royalty_rate_adjustment. However, this time, I don't want the sum or max or whatever the number is, I want to just display as above. Is it possible to do this?

    You must sum/max. The reason is because you have one row for each column that you are rotating, IE. a single column is filled for each line. To overwrite all the lines into a single line, you must make an aggregate query - the sum/max will not change the values.

    ETA: If you're on 11g, you also have the option of using the PIVOT.

    Published by: Boneist on 08-Oct-2010 14:44

  • Programming logic needed to retrieve the records for the last month/week

    Hi all

    I need assistance in programming SQL logic.

    Oracle database version: 10.2.0.3.0

    Requirement

    In an environment of DW, I need to program to weekly and monthly automated batch insert the data from Data_tbl to Reporting_tbl to generate reports. Descriptions of paintings are given below.

    Table 1 - Data_tbl (Source of table - this table is updated daily).

    Record_dt first name last name


    Table 2 - Reporting_tbl_ (the target table)

    Cycle_dt first name last name

    1. monthly report

    In the SQL query, I where clause conditions.

    Where Record_dt > = 1 November 08 ' and record_dt < = 30 November 08 '

    Using the above condition in development, I'm pulling over the last months data source table data. This will be repeated every month, and it should be automated.
    that is, if I run this report at any time in December 2008, he should choose documents dates from Nov 01 to November 30, 2008. If I run this report at any time in January 2009, he should choose documents dates to Dec. 01 to December 31, 2008.
    Date values must be assigned for the last month. Value of Cycle_dt in the target table must be the date of the end of last month as on November 30, 2008, 31-dec-2008.


    2 weekly Report

    In the SQL query, I where clause conditions.

    Where Record_dt > ='01-dec-08' and record_dt < ='' 07-dec-08

    Monday week start date and end date is Sunday.
    If I run the report between the 08 Dec-14 Dec, it should make records of the dates of Dec. 01 to December 7, 2008.
    On 15 December, he should seek from 08 Dec-14 Dec.
    Value of Cycle_dt in the target table must be the date of last weekend, as on December 7, 2008, December 14, 2008.
    Please help me with the logic for both monthly and weekly reports.

    Thank you

    Hello

    TRUNC (dt, 'W') is the beginning of the week, which may be different days, according to the NLS parameters in your session. Unless you want something that varies from one session to the next, you should stick with the weeks of ISO.

    TRUNC (SYSDATE + 1, 'IW') - 1
    

    is the Sunday of the week underway Sunday to Saturday, which starts and ends in 1 day before the ISO week.
    To find the precedent of the week from Sunday to Saturday:

    WHERE   record_dt >= TRUNC (SYSDATE - 6, 'IW') - 1
    AND     record_dt <  TRUNC (SYSDATE + 1, 'IW') - 1
    

    If you were interested in a week from Saturday to Friday (either 2 days earlier than the ISO week):

    TRUNC (SYSDATE + 2, 'IW') - 2
    
  • Need help with Sql Tunning

    Under Update taking 2 h complete 3000 sets.

    UPDATE ARR_TRANSACTIONS ARR

    SET = NUMBER99

    (SELECT ARR_1.NUMBER99

    OF ARR_TRANSACTIONS ARR_1, ARR_HEADER BH

    WHERE ARR_1.ARR_ID = BH. ARR_ID

    AND BH. FLAG = "Y".

    AND ARR_1.LINE_ID = ARR. ORIG_INV_LINE_ID

    AND ARR_1.NUMBER9 IS NOT NULL

    AND ROWNUM = 1)

    WHERE ARR BATCH_ID = 26219

    AND ARR. NUMBER99 IS NULL

    I added more some condition where to reduce cost and its working fine. But I need to rise more than performance on SQL.

    Please help with SQL.

    I do not see the number of 3000 lines in the plan - so I guess that the optimizer does not compute with the correct numbers. Could generate the plan with dbms_xplan.display_cursor? This could tell us something about filter predicates and access.

    In the given situation, I would check:

    • is the access to the index in step 1 (filtered by the relevant conditions: this could be BATCH_ID = 26219) return actually 248 entries (or something similar)?
    • Access table in step 2 returning 204 lines (or something similar) after applying the filters given? If the number of lines is much bigger then a Nested Loops is perhaps not a good idea.

    To make this much simpler check, you could create a plan with statistics of content (RowSource) given that the plan containing the real and the number of estimated rows.

    If the estimated cardinalities are not plausible the next question would be if the statistics are strong and up to date.

  • OBIEE logical column has same SQL but returns different results

    I have a SQL query with a case statement that returns the correct results by operating in Oracle SQL Developer. I've created several logical columns in OBIEE, one for each case in the original query. However, the results returned by each logical column OBIEE are radically different from the original SQL query results, even if the SQL code is virtually identical.

    For example, a column logical OBIEE that returns incorrect results contains the following SQL code:

    SUM (CASE when

    ("Registration - College". "" Effective colleges F. ("" Postal code "like '% a %') or

    ("Registration - College". "" Effective colleges F. ("" Postal code "like '%B %') or

    ("Registration - College". "" Effective colleges F. ("" Postal code "like '%c %') or

    ("Registration - College". "" Effective colleges F. ("" Postal code "like"% %") or

    ("Registration - College". "" Effective colleges F. ("" Postal code "like '%G %') or

    ("Registration - College". "" Effective colleges F. ("" Postal code "like"hour %") or

    ("Registration - College". "" Effective colleges F. ("" Postal code "like"%%J") or

    ("Registration - College". "" Effective colleges F. ("' Postal code ' like '%R %') or

    ("Registration - College". "" Effective colleges F. ("" Postal code "like '%s %') or

    ("Registration - College". "" Effective colleges F. ("" Postal code "like '%T %') or

    ("Registration - College". "" Effective colleges F. ("" Postal code "like"% %") or

    ("Registration - College". "" Effective colleges F. ("" Postal code "like '%x %') or

    ("Registration - College". "" Effective colleges F. ("' Postal code ' like '%Y %')

    THEN 0 OTHERWISE 1 END)

    The case statement in the original SQL query, which returns the correct results, is as follows:

    CASE

    WHEN (postal_zip_code_permanent like "%%K") or (postal_zip_code_permanent like '% %') or (postal_zip_code_permanent like '%m %') or (postal_zip_code_permanent like '%n %') or (postal_zip_code_permanent like "%p %") THEN "Ontario".

    WHEN (postal_zip_code_permanent like '% a %') or (postal_zip_code_permanent like '%B %') or (postal_zip_code_permanent like '%c %') or (postal_zip_code_permanent like '% %') or (postal_zip_code_permanent like '%G %') or (postal_zip_code_permanent like "%hour") or (postal_zip_code_permanent like "%%J") or (postal_zip_code_permanent like "%%R") or (postal_zip_code_permanent like '%s %') or (postal_zip_code_permanent like '%t %') or (postal_zip_code_permanent like '% %') or (postal_zip_ code_permanent like '%x %') or (postal_zip_code_permanent like "%%Y") THEN "Canada, other than Ontario.

    WHEN (substr(postal_zip_code_permanent,1,1) IN ('1 ', '2', '3', '4', '5', '6' ', 7',' 8 ', ' 9',' 0') or (postal_zip_code_permanent like '%d %') or (postal_zip_code_permanent like '%f %') or (postal_zip_code_permanent like ' % I %') or (postal_zip_code_permanent like "% O") or (postal_zip_code_permanent like "%%Q") or (postal_zip_code_permanent like "%%U") or (postal_zip_code_permanent like ' % W ') or (postal_zip_code_permanent like "%%Z")) THEN 'other')

    WHEN (postal_zip_code_permanent like '% + %') or (postal_zip_code_permanent like '%. %') or (postal_zip_code_permanent like ' %? %') or (postal_zip_code_permanent like '% %') or postal_zip_code_permanent IN ('+ ','.', '?)) (',',') And THEN "Invalid."

    WHEN postal_zip_code_permanent is null THEN 'Blank '.

    Of OTHER postal_zip_code_permanent

    END

    Now I see what the problem was. In the original SQL query, each condition is exclusive, for each record will only be categorized in one of the scenarios WHEN. But in OBIEE, each logical column is autonomous, so some records were classified into more than logical column, even if each logical column was supposed to be exclusive.

  • Need help with sql query

    Dear all,

    I have a sql like query below

    SELECT min (G.TRANSACTION_DATE), D.REQUEST_NUMBER

    MTL_TXN_REQUEST_HEADERS D,.

    MTL_TXN_REQUEST_LINES, E.

    MTL_MATERIAL_TRANSACTIONS G,.

    Mtl_Transaction_Types I have

    WHERE D.HEADER_ID = E.HEADER_ID

    AND G.TRANSACTION_TYPE_ID = I.TRANSACTION_TYPE_ID

    AND Upper (I.Transaction_Type_Name) = Upper ('TEC outcome')

    AND E.LINE_ID = G.MOVE_ORDER_LINE_ID

    AND D.MOVE_ORDER_TYPE = 5

    TO_DATE (G.TRANSACTION_DATE) BETWEEN TO_DATE('01-JAN-2014') AND TO_DATE('31-DEC-2014')

    D.REQUEST_NUMBER GROUP

    I need to get the first number of the application and finally ask for number based on the date of the transaction, how can I get the number of name application and based on the date of the transaction for the same query, please help me.

    above query is back under results

    results.jpg

    If the query should return a line with the number of application like 2383 based on minimum transaction date and another column based on the maximum transaction date, please help me.

    so in the example above, it must return

    FIRST REQUEST NUMBER LAST NUMBER

    2383                                      1886

    Thank you

    select min(request_number) keep(dense_rank first order by transaction_date asc ) request_number_min
         , min(request_number) keep(dense_rank first order by transaction_date desc) request_number_max
      from (
            select min(g.transaction_date) transaction_date
                 , d.request_number
              from mtl_txn_request_headers d
                 , mtl_txn_request_lines e
                 , mtl_material_transactions g
                 , mtl_transaction_types i
             where d.header_id                    = e.header_id
               and g.transaction_type_id          = i.transaction_type_id
               and upper(i.transaction_type_name) = upper('WIP Issue')
               and e.line_id                      = g.move_order_line_id
               and d.move_order_type              = 5
               and to_date(g.transaction_date) between to_date('01-jan-2014') and to_date('31-dec-2014')
             group
                by d.request_number
           )
    
  • Need help with sql query performance

    Dear all,

    I have a sql like query below, I need to give the following query please help me identify which statement I should tune to have better performanece.

    Select rownum LINE_NUM,

    A.LINE_ID,

    TO_CHAR (A.INVITMID),

    TO_NUMBER (A.PICKQTY),

    UNLOADINGPNT NULL,

    RRNUM NULL,

    WORKORDNUM NULL,

    WORKORDDESC NULL,

    A.PONUM,

    DTR_DUMB NULL,

    A.DESCRIPTION,

    FROM_SUB NULL,

    TO_SUB NULL,

    NO SOURCE,

    ASSET_NUMBER NULL,

    A.RECEIPTNUM,

    MOVEORD NULL,

    FROM_LOC NULL,

    TO_LOC NULL,

    MSD_NUM NULL,

    CONTAIN_LINE NULL,

    A.UOM,

    A.PO_RELEASE

    de)

    Select headerid Po.Po_Header_Id,

    rcv1. Po_Line_Id LINE_ID,

    rcv1.item_id INVITMID,

    (NVL(Rcv1.Transact_Qty,0)-NVL(rcv2.transact_qty,0)) PICKQTY,

    Po.Segment1 PONUM,

    Rcv1.Receipt_Num RECEIPTNUM,

    Rcv1.Item_Desc DESCRIPTION,

    Rcv1.Transact_Uom GLU,

    Rcv1.Po_release

    Po_Headers_All in.,.

    (Select rcv3. Po_Header_Id, RCV3.receipt_num, rcv3. Po_Line_Id, rcv3. Destination_Type_Code, rcv3. Item_Id, rcv3. Item_Desc, rcv3. Transact_Uom, SUM (rcv3. Transact_Qty) Transact_Qty, rcv3. PO_RELEASE OF)

    SELECT A.Po_Header_Id,

    C.RECEIPT_NUM receipt_num,

    A.Po_Line_Id,

    A.Destination_Type_Code,

    B.Item_Id,

    B.item_description Item_Desc,

    A.UNIT_OF_MEASURE Transact_Uom,

    A.QUANTITY Transact_Qty,

    D.RELEASE_NUM PO_RELEASE

    OF RCV_TRANSACTIONS,.

    RCV_SHIPMENT_HEADERS C.

    B RCV_SHIPMENT_LINES,

    PO_RELEASES_ALL D

    WHERE C.SHIPMENT_HEADER_ID = A.SHIPMENT_HEADER_ID

    AND B.SHIPMENT_LINE_ID = A.SHIPMENT_LINE_ID

    AND UPPER (A.Transaction_Type) = "to DELIVER".

    AND higher (A.Destination_Type_Code) = "EXPENSES".

    AND D.PO_RELEASE_ID = A.PO_RELEASE_ID

    UNION ALL

    SELECT A.Po_Header_Id,

    C.RECEIPT_NUM receipt_num,

    A.Po_Line_Id,

    A.Destination_Type_Code,

    B.Item_Id,

    B.item_description Item_Desc,

    A.UNIT_OF_MEASURE Transact_Uom,

    A.QUANTITY Transact_Qty,

    D.RELEASE_NUM PO_RELEASE

    OF RCV_TRANSACTIONS,.

    RCV_SHIPMENT_HEADERS C.

    B RCV_SHIPMENT_LINES,

    PO_RELEASES_ALL D

    WHERE C.SHIPMENT_HEADER_ID = A.SHIPMENT_HEADER_ID

    AND B.SHIPMENT_LINE_ID = A.SHIPMENT_LINE_ID

    AND B.ITEM_ID IS NULL

    AND UPPER (A.Transaction_Type) = "to DELIVER".

    AND higher (A.Destination_Type_Code) = "WORKSHOP".

    D.PO_RELEASE_ID AND = A.PO_RELEASE_ID) rcv3

    GROUP BY rcv3. Po_Header_Id, RCV3.receipt_num, rcv3. Po_Line_Id, rcv3. Destination_Type_Code, rcv3. Item_Id, rcv3. Item_Desc, rcv3. Transact_Uom, rcv3. Rcv1 PO_RELEASE),

    (SELECT A.PO_LINE_ID,

    Sum (A.Quantity) transact_qty,

    A.PO_HEADER_ID,

    C.RECEIPT_NUM

    OF RCV_TRANSACTIONS,.

    RCV_SHIPMENT_HEADERS C.

    B RCV_SHIPMENT_LINES,

    PO_RELEASES_ALL D

    WHERE C.SHIPMENT_HEADER_ID = A.SHIPMENT_HEADER_ID

    AND B.SHIPMENT_LINE_ID = A.SHIPMENT_LINE_ID

    AND UPPER (A.Transaction_Type) = "RETURN to the RECEPTION"

    AND D.PO_RELEASE_ID = A.PO_RELEASE_ID

    A.PO_LINE_ID, A.PO_HEADER_ID, C.RECEIPT_NUM GROUP) Rcv2

    Where Po.Po_Header_Id = Rcv1.Po_Header_Id (+)

    And Rcv1.Po_Line_Id = Rcv2.Po_Line_Id (+)

    And Rcv1.Receipt_Num = Rcv2.Receipt_Num (+)

    And Rcv1.Transact_Qty <>Nvl(Rcv2.Transact_Qty,999999999)

    Group of po.po_header_id, rcv1.po_line_id, po.segment1, rcv1.receipt_num, rcv1.item_id, Rcv1.Item_Desc, rcv1. TRANSACT_UOM, rcv1. PO_RELEASE, (NVL(Rcv1.Transact_Qty,0)-NVL(RCV2.transact_qty,0))) has

    Is my version of the database: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64 bit Production

    Please find the attached PLAN to EXPLAIN.

    EXPLAINPLAN.jpg

    Thank you

    May be essentially the same join (between a, b, c and d) twice instead of three times

    sounds like it could be done with a single join (between a, b, c, and d), but you do not some columns than the columns of rcv1 rcv2

    We can work on what we can see only

    Select rownum line_num,

    rcv1.po_line_id line_id,

    TO_CHAR (rcv1.item_id) invitmid,

    NVL(rcv1.transact_qty,0) - nvl(rcv2.transact_qty,0) pickqty,

    unloadingpnt null,

    rrnum null,

    workordnum null,

    workorddesc null,

    Po. Ponum Segment1,

    dtr_dumb null,

    description of the rcv1.item_desc,

    from_sub null,

    to_sub null,

    No source,

    asset_number null,

    rcv1.receipt_num receiptnum,

    moveord null,

    from_loc null,

    to_loc null,

    msd_num null,

    contain_line null,

    Glu rcv1.transact_uom,

    rcv1.po_release

    of po_headers_all in.

    left outer join

    (select a.po_header_id,

    c.receipt_num,

    a.po_line_id,

    a.destination_type_code,

    b.item_id,

    b.item_description item_desc,

    a.unit_of_measure transact_uom,

    Sum (a.Quantity) transact_qty,

    d.release_num po_release

    from (select shipment_header_id,

    shipment_line_id,

    po_release_id,

    po_header_id,

    po_line_id,

    destination_type_code,

    unit_of_measure,

    quantity

    of rcv_transactions

    where upper (a.transaction_type) = "to DELIVER".

    and upper (a.destination_type_code) ('charge', 'WORKSHOP')

    ) a

    inner join

    rcv_shipment_lines b

    On a.shipment_line_id = b.shipment_line_id

    inner join

    c rcv_shipment_headers

    On a.shipment_header_id = c.shipment_header_id

    left outer join

    po_releases_all d

    On a.po_release_id = d.po_release_id

    where upper (a.destination_type_code) = "EXPENSES".

    or (upper (a.destination_type_code) = 'WORKSHOP'

    and b.item_id is null

    )

    A.po_header_id group,

    c.receipt_num,

    a.po_line_id,

    a.destination_type_code,

    b.item_id,

    b.item_description,

    a.unit_of_measure,

    d.release_num

    ) rcv1

    On po.po_header_id = rcv1.po_header_id

    left outer join

    (select a.po_line_id,

    Sum (a.Quantity) transact_qty,

    a.po_header_id,

    c.receipt_num

    from (select shipment_header_id,

    shipment_line_id,

    po_release_id,

    po_header_id,

    quantity

    of rcv_transactions

    where upper (a.transaction_type) = "RETURN to THE RECIPIENTS.

    ) a

    inner join

    rcv_shipment_lines b

    On a.shipment_line_id = b.shipment_line_id

    inner join

    c rcv_shipment_headers

    On a.shipment_header_id = c.shipment_header_id

    left outer join

    po_releases_all d

    On a.po_release_id = d.po_release_id

    A.po_line_id group,

    a.po_header_id,

    c.receipt_num

    ) rcv2

    On rcv1.po_line_id = rcv2.po_line_id

    and rcv1.receipt_num = rcv2.receipt_num

    where rcv1.transact_qty! = nvl(rcv2.transact_qty,999999999)

    Concerning

    Etbin

  • Need help with SQL/PL/SQL for Dates

    Hi Experts - need help with a SQL query.

    I need to insert some date fields in a table called CALENDAR_PERIOD.

    Current data in CALENDAR_PERIOD table with their data types:

    STARTPERIOD (DATE) YEAR (NUMBER) PERIOD_LABEL (Varchar2 255)

    02/11/2014 2014 2014/02/11 SUN

    03/11/2014 2014 14/03/11 MON

    04/11/2014 2014 11/04/14 MAR

    I have to increment above values up to the year 2025. I don't know how to write SQL and increment of these values.

    Ex: My next value should insert: 05/11/2015 2014 11/05/14 WED like that I need to insert data until 12 31, 2025.

    Can you please help me with PL/SQL block?

    Really appreciate your help!

    DB version:

    Oracle Database 11 g Enterprise Edition Release 11.2.0.3.0 - 64 bit Production

    PL/SQL Release 11.2.0.3.0 - Production

    CORE Production 11.2.0.3.0

    AMT for IBM/AIX RISC System/6000: Version 11.2.0.3.0 - Production

    NLSRTL Version 11.2.0.3.0 - Production

    Thank you
    Sandy

    Hello Sandy,

    Maybe something like

    INSERT INTO calendar_period (startperiod, year, period_label)

    SELECT DATE '' 2014-11-04 + LEVEL

    , TO_NUMBER (TO_CHAR (DATE '' 2014-11-04 + LEVEL, "YYYY"))

    , TO_CHAR (DATE '' 2014-11-04 + LEVEL, "MM/DD/YY DY")

    OF the double

    CONNECT BY LEVEL<= date="" '2025-12-314="" -="" date="">

    ;

    ((mais je ne comprends pas pourquoi nous créons une telle table "année" et "period_label" peuvent être calculé à partir de startperiod))

    Best regards

    Bruno Vroman.

  • need help with sql queries

    Dear all,

    I have a parameter like below

    11000048,11000050

    I need to convert in SQL format below, please help me

    "11000048","11000050"


    ' parameter would be so separated by commas, I need to convert in above format, if the parameter is a number say 1111111 must convert it as "1111111" in sql.


    Please help me.


    Thank you

    You can do it

    your_parameter: = "" ' | " Replace (your_parameter, ",", "",""). '"';

  • How can I define logic in obiee 11g sql

    Hi all

    I'm changing the SQL generated by OBIEE within the Advanced tab by default logical value. How can I edit that. It looks like read only. I can set the sql logic in Administration-> SQL problem. In 10g, I believe that we can paste SQL logic and set it. Any help will be appreciated. Thanks in advance.

    AJ

    Sorry I got it...... Create new analysis in the Advanced tab will do...

  • Need help on Sql Developer 4.0.0.13.30

    Hello

    I need a few suggestions if the underside of features/settings exist in the version of the sql developer said.

    When I open a new connection, a new code editor opens sometimes, sometimes it does not. It should open each time. Is there any setting for this?

    Can I get a list of all currently open windows in a corner of my window of developer sql (like its pl/sql developer tool, in the lower left corner)?

    I can cascade open windows? I can see vertical / horizontal / Float option window, but none cascading is here.

    Thank you

    If you click on the small blue arrow in the top right corner down - it will be on the same line as the list of tabs of the document - it will show you your list of open editors. Windows > Documents will also show you this.

Maybe you are looking for