compare two tables and update the differences

Hi all
Sorry for the newbie question, but I am a beginner in the present.

I have two tables, both have same structure-

CODE - code NUMBER (6,0) store is the primary key does not change and is unique
ADDRESS1
ADDRESS2
ADDRESS3 - all VARCHAR2 (100)

One of the tables is named MASTER, the other being updated. MASTER contains hundreds of lines, while the table of UPDATES may have anywhere from zero to 10 or more.
I want to compare the table of UPDATES against the MASTER of the table and if there is a difference, ask the differences in the table in UPDATES to the MASTER of table - so if the address of an Exchange store, then the change is reflected in the MASTER table by crushing with the data contained in the UPDATES table.

I thought that maybe using sliders and compare each field but there must be a more efficient way.

I hope that I have explained quite clearly... any help would be greatly appreciated.

Thank you
Bill

Education MERGE, assuming that your version supports supported the MERGER.

SY.

Tags: Database

Similar Questions

  • I want to compare two tables and out a boolean

    This should be simple.  I want to compare two tables (5 items) and return a single Boolean value (T/F), not an array of Boolean.

    Thank you

    Kevin

    Right click on the comparison, the comparison mode, select compare the aggregates.

  • Only one Integrator for export csv to table and update the table?

    Hello
    I have a requirement where I need to create a single Integrator for export data in the CSV file into a custom oracle table and also use the same Integrator to download and update the custom table data. Is it possible to do this in a single Integrator.

    Thank you
    Kishore

    Yes you can do it.

    You must create a type of UPDATE metadata Integrator.

    First time:

    Custom table is empty.

    WEB ADI will download a blank Excel sheet. Copy the data from the CSV file and paste this Excel.Then download this file that will update the Integrator.

    A sample example is as follows:

    web_adi_pkg.main (param_1, param_2,... param_n)
    download_data;
    upload_data;

    Download data-> select query to download the data (select * from custom_table)
    Download the data-> insert into custom_table where NOT EXISTS (select 1 from custom_table where primary_key = primary_key_col_from_csv)
    update of custom_table where there are (select 1 from custom_table where primary_key = primary_key_col_from_csv)

    Please try above logic.

  • Comparing the sum of the two tables and correct by difference of amount in its second t

    Hello guys,.

    I have a very difficult task that I can't get my head around.
    The sample data looks like this:

    Master table
    Request - booking - debit - credit - MasterAmout
    1------------1----------------D---------------------------------15.3
    1------------2----------------D---------------------------------480.6
    1------------3------------------------------C-------------------496.8
    ------------------------------------------- 0.9


    The slave table
    Demande---reservation---debit---credit---slaveamout---slavecorrection
    1------------1------------D------------------------------------15.3---------------14.5
    1------------2------------D------------------------------------480.6-------------480.6
    1------------3-----------------------------C-------------------496---------------496
    -------------------------------------------0.1--------------------------------------0.9


    The reservation have a total amount of 0.1, but must be corrected to 0.9 because the main table has 0.9.

    Reservation 1 requires a correction so the slave table also has a total of 0.9 (business rule is, only corrections on the first booking). So we have
    to change the amount of 15.3 to 14.5. I plan my SQL like this:

    1 reservations sum of two tables for each claim. Compare the two for each individual claim.
    2. If Captain sum the amount shows a difference between master / slave
    2.1 select top 1 table reservation slave for the specific claim and increase/decrease by the difference of these two amounts.

    Who is?

    Hello

    Use MERGE to actually do the UPDATE.
    The ROW_NUMBER analytic function to identify the first booking in slave (unless you can count on which the reservation = 1).

    MERGE INTO     slave     dst
    USING     (
         WITH     master_summary     AS
         (
              SELECT       claim
              ,       SUM ( master_ampount * CASE
                                       WHEN  debit  = 'D'  THEN -1
                                       WHEN  credit = 'C'  THEN  1
                                   END
                         )     AS balance
              FROM       master
              GROUP BY  claim
         )
         SELECT     s.claim
         ,     s.booking
         ,     SUM ( s.slave_amount * CASE
                                WHEN  s.debit  = 'D'  THEN -1
                                WHEN  s.credit = 'C'  THEN  1
                               END
                  ) OVER (PARTITION BY  claim) - m.balance     AS diff
         ,     ROW_NUMBER () OVER ( PARTITION BY  claim
                             ORDER BY        booking
                           )     AS r_num
         FROM     master_summary     m
         JOIN     slave          s  ON     m.claim     = s.claim
         )          src
    ON     (     src.claim     = dst.claim
         AND     src.r_num     = 1
         )
    WHEN MATCHED THEN UPDATE
    SET     dst.debit      = CASE
                        WHEN src.diff      <  0 THEN 'D'
                                       ELSE NULL
                     END
    ,     dst.credit      = CASE
                        WHEN src.diff      <  0 THEN NULL
                                       ELSE 'C'
                     END
    ,     dst.slaveamount = ABS (src.diff)
    ;
    

    If you would care to CREATE TABLE and INSERT statements for the sample data (showing the two tables, as they exist before the DML) then I could test this.

    The design of history seems very uncomfortable. Instead of the debit and credit columns, it would be much simpler to have positive and negative amounts. Is it really worth now both not corrected and corrected the amounts in the table on the slave, especially if you keep only versions corrected debit and credit columns?

  • How to compare two TABLES and different lines of list?

    I have two structural equal paintings aaa and bbb
    that (could) have different lines.

    How can I compare the tables and display different lines?

    Peter

    Something like this->

    SELECT aaa.*,'bbb' "Not present in" FROM aaa
    MINUS
    SELECT bbb.*,'bbb' "Not present in" FROM bbb
    UNION ALL
    (
    SELECT bbb.*,'aaa' "Not present in" FROM bbb
    MINUS
    SELECT aaa.*,'aaa' "Not present in" FROM aaa
    )
    

    Kind regards.

    LOULOU.

  • How to compare two files to see the differences in the content?

    How to compare two files (one word and a single pdf) to see if the files are identical without having read all 7 pages?

    Thank you

    You cannot compare files of different nature. If you convert the Word file to PDF, you can then compare the two files in Acrobat.

  • Compare two columns and get the percentage of cells that match

    Hello

    I'm looking to take two columns of data from different tables in the same document, which should have a high enough percentage of boxes and have another cell tabulate the corresponding percentage. I can the of seem to figure out how to do this, but it seems really possible.

    Any help is greatly appreciated.

    Thank you!

    C1 = A1 = B1

    It's shorthand dethrone select cell C1 and type (or copy and paste it here) the formula:

    = A1 = B1

    Select cell C1, copy

    Select the column C, paste

    Select cell E2, and then type 'TRUE '.

    Select cell E3 and then type "FALSE".

    F2 = COUNTIF ($C, E2)

    F3 = COUNTIF ($C, E3)

    G2 = F2÷SUM(F$2:F$3)

    G3 = F3÷SUM(F$2:F$3)

  • How to compare two dates and find exactly

    How to compare two dates and find the exact age of the person, no one could be an age of child 2 days or a month, or other.

    I'd really appreciate if someone help o

    Concerning

    After spending 2 hours, I go out with a solution by myself, how ever the function can be customize to check if the user enters date right.

    function findAge(subjectName,fromdate, todate) {
        console.log("findAge(fromdate, todate) is called now "+subjectName+"-->"+fromdate+"-->"+todate);
        if(todate) todate= new Date(todate);
        else todate= new Date();
    
        var age= [], fromdate= new Date(fromdate),
        y= [todate.getFullYear(), fromdate.getFullYear()],
        ydiff= y[0]-y[1],
        m= [todate.getMonth(), fromdate.getMonth()],
        mdiff= m[0]-m[1],
        d= [todate.getDate(), fromdate.getDate()],
        ddiff= d[0]-d[1];
    
        if(mdiff < 0 || (mdiff=== 0 && ddiff<0))--ydiff;
        if(mdiff<0) mdiff+= 11;
        if(ddiff<0){
            fromdate.setMonth(m[1]+1, 0);
            ddiff= fromdate.getDate()-d[1]+d[0];
            --mdiff;
        }
        if(ydiff> 0) age.push(ydiff+ ' year'+(ydiff> 1? 's ':' '));
        if(mdiff> 0) age.push(mdiff+ ' month'+(mdiff> 1? 's':''));
        if(ddiff> 0) age.push(ddiff+ ' day'+(ddiff> 1? 's':''));
        if(age.length>1) age.splice(age.length-1,0,' and ');
        console.log("===============================");
        console.log("Subject age is = "+age.join(''));
        console.log(" age Day = "+ddiff);
        console.log(" age Month = "+mdiff);
        console.log(" age Year = "+ydiff);
        console.log("===============================");
        var subjectAGE =  age.join('');
    
    }
    

    peardox Thanks for the reply

  • How to join two tables to retrieve the data from the columns in table two. Tables have primary and foreign key relationships

    Hello

    I want to join the two tables to retrieve the data from the columns of the two table passing parameters to the join query. Tables have primary and foreign key relationships

    Details of the table

    Alert-1 - AlertCode (FK), AlerID (PK)

    2 AlertCode-AlertDefinition-(PK)

    Help, please


    ----------

    Hi Vincent,.

    I think that you have not worked on adf 12.1.3.  In adf 12.1.3 you don't have to explicitly create the association. When you create the EO to your table, Association xxxxFkAssoc, will be created by ADF12.1.3 for you automatically. Please try this and do not answer anything... You can also follow the links below. I solved the problem by using the following link

    Oracle ADF Guide step by step - Oracle ADF tutorial: creating a relationship of the master / detail using Oracle ADF

    ---

  • in bulk accumulate in plsql and update the same table.

    Hello

    I use bulk collect and update the table that I use the slider. This table has nearly 1 million records. There will be problems with my code? Any help is greatly appreciated.

    DECLARE

    terminate_reason VARCHAR2 (1000);

    time_line NUMBER;

    limit_in NUMBER;

    CURSOR cur_violations IS

    SELECT * from abc_table;

    TYPE cur_abc_table_type IS TABLE OF cur_abc_table % ROWTYPE INDEX BY PLS_INTEGER;

    cur_abc_table_rec cur_abc_table_type;

    BEGIN

    limit_in: = 5000;

    OPEN cur_abc_table.

    LOOP

    Get the cur_abc_table COLLECT in BULK

    IN limit_in LIMIT cur_abc_table_rec;

    dbms_output.put_line ('new count is' | cur_abc_table_rec.count);

    WHEN OUTPUT cur_abc_table_rec.count = 0;

    BECAUSE me in 1... cur_abc_table_rec. Count

    LOOP

    time_line: = trunc (sysdate) - cur_abc_table_rec (i) .viol_date;

    IF (time_line > 1000)

    THEN

    terminate_reason: = 'NOTWELL. "

    ON THE OTHER

    terminate_reason: = 'PUSHED ';

    END IF;

    UPDATE abc_table v

    SET

    v.pers_terminate_reason = terminate_reason;

    END LOOP;

    END LOOP;

    COMMIT;

    CLOSE Cur_abc_table;

    EXCEPTION

    WHEN no_data_found THEN

    dbms_output.put_line ('no data is found in the selection' |) SQLERRM);

    WHILE OTHERS THEN

    dbms_output.put_line ('another error' |) SQLERRM);

    END;

    Thank you

    KK

    What happened when you tried? The sliders were ' for the update of "syntax, so there is no general problem update lines inside a loop of cursor.

    The big question you have, it is that the loop is completely and totally useless. What you can do in SQL, do in SQL - not to complicate things with PL/SQL that you don't need.

  • Compare 2 different versions of xml and highlite the differences

    Hello

    Currently we have xml and which is displayed on the web page using css style sheets.
    The same xml that we remain majority but with small changes (different say version created after a week).

    We want to be able to follow the differences with the previous version and highlight the differences, when to display in the web page.
    Please let know us if this is possible and how.

    Thank you.

    What is your version of the database? (SELECT * FROM version$ v)

    On 11.2.0.3, update of XQuery can be useful.

    On lower versions, I'd do it like this:

    SQL> WITH sample_data AS (
      2   SELECT xmltype(
      3  '
      4    
      5      7934
      6      MILLER
      7      CLERK
      8      7782
      9      1982-01-23T00:00:00
     10      1300
     11      
     12      10
     13    
     14  ') doc1,
     15  xmltype('
     16    
     17      7934
     18      MILLER
     19      CLERK
     20      7782
     21      xyz
     22      1982-01-23T00:00:00
     23      1300
     24      
     25      10
     26    
     27  ') doc2
     28   FROM dual
     29  )
     30  SELECT XMLSerialize(document
     31           XMLPatch(
     32             doc1
     33           , XMLQuery(
     34              'declare namespace xd = "http://xmlns.oracle.com/xdb/xdiff.xsd"; (: :)
     35               declare function local:copy($itemset as item()*) as item()* {
     36                 for $i in $itemset
     37                  return
     38                   typeswitch($i)
     39                     case element(xd:content) return element {node-name($i)} { {local:copy($i/(node()|@*))} }
     40                     case element() return element {node-name($i)} { local:copy($i/(node()|@*)) }
     41                     default return $i
     42               }; local:copy(*)'
     43               passing XMLDiff(doc1, doc2)
     44               returning content
     45             )
     46           )
     47           as clob indent
     48         )
     49  FROM sample_data
     50  ;
    
    XMLSERIALIZE(DOCUMENTXMLPATCH(
    --------------------------------------------------------------------------------
    
      
        7934
        MILLER
        CLERK
        7782
        
          xyz
        
        1982-01-23T00:00:00
        1300
        
        10
      
    
     
    

    Basically, take us the XMLDiff output and modify it slightly to insert the tag . Then, simply call the XMLPatch function with this newly formed Xdiff document.

    Note that I would normally use XSLT (identity model) to modify Xdiff output but there seems to be a bug when dealing with node Processing, where my using the equivalent of XQuery.

    Published by: odie_63 on September 13. 2012 16:14

  • BUG? Statement of BRIDGE to compare two tables

    Hello

    I tried to compare two tables different dbs and remembered a post on applications to Connectin Cross
    http://barrymcgillin.blogspot.com/2010/11/cross-connection-queries.html
    BRIDGE temparb AS "EB05 01"
    (SELECT * FROM arb)
    (SELECT * FROM temparb 
    MINUS 
    SELECT * FROM arb
    )
    UNION ALL
    (SELECT * FROM arb
    MINUS
    SELECT * FROM temparb 
    );
    I expect to get the differences between the ARB table in my current schema and the table alias temparb arb in the other db. Yet it seems that in this case only the table in my current schema is read.

    I materialize at the table BRIDGE with
    BRIDGE temparb AS "EB05 01"
    (SELECT * FROM arb)
    and select the value that I know to be only in the remote schema
    SELECT id FROM temparb WHERE id = 2562;
    SELECT id FROM arb WHERE id = 2562;
    Both times I get no results. I even tried to use aliases on the table, same result. Tested in EA3 3.0 and 3.1.

    Has anyone tried this before?

    Concerning
    Marcus

    Hi Marcus,

    Have you tried without the quotes around the name of connection?

    I have a named connection
    system_local
    which I run the following command

    drop table testbridge_remote;
    drop table testdbrige;
    create table testbridge (col1 int);
    insert into testbridge values (1);
    insert into testbridge values (2);
    insert into testbridge values (3);
    commit;

    I have a named connection
    Name of the connection with space
    I performed the following in the

    drop table testdbrige;
    create table testbridge (col1 int);
    insert into testbridge values (4);
    insert into testbridge values (5);
    insert into testbridge values (3);
    commit;

    Then I can execute the following statement in the connection of system_local/worksheet

    BRIDGE testbridge_remote as the name of connection with Space(select * from testbridge)
    + (SELECT * FROM testbridge_remote +)
    LESS
    SELECT * from testbridge
    +)+
    UNION ALL
    + (SELECT * FROM testbridge +)
    LESS
    SELECT * from testbridge_remote
    +);+

    It works well.
    Returns the rows in the remote table not in the local table and lines in the local table, not the remote table.

    Kind regards
    Dermot
    SQL development team.

  • Compare two Tables question

    Hello

    I need to compare two tables (T1, T2) and update existing records only in T2, but not in T1. So basically, the lines updated in T2:

    Select * from T2 where T2.id not in (select id from T1).

    What would be a good way to achieve this in ODI?

    I created an ODI interface with a join T2.id not in T1.ID, but it did not work "coz:" ORA-01427: einreihig subquery returns several lines "."

    Appreciate any input/access map.

    Thank you.

    Hi Michele...

    At first glance, there are at least 2 ways to do it:

    (1) put the steps in "(select id from T1)" (you can use an ODI API to get the schema dynamically) as an object filter to T2 (interface), use the incremental update IKM SQL and put "Insert" option on 'No'. " This will do a few updates.

    OR

    (2) in an interface set the T1 and T2 and left join (based on T2) load a temp table where all fields accept the value zero. Next to the columns to update (of course the T2), create an ID column (I named him as T1_Temp_ID) and map the Id of the T1 to it.
    Now just create new interface where the temperature is source and put a filter like "T1_Temp_ID is not null.

    The first option is less complex and can bring better performance.
    The second option gives a better follow-up of the use of the table and the columns, but can be less performatique.

    This help you?

  • compare two table with cluster inside

    Hello

    I want to compare two tables containing a cluster with several groups in it. When you use the equal the result is the same pattern as the cluster of entry. But I just need a true or false. It doesn't bother me that it changed on position 1 or any other position.

    Is there an elegant way to do it?

    Thanks for any help.

    Yves

    Right-click equality and change to compare aggregations. That, or add a table and later.

    /Y

  • Compare two tables, APEX

    Hello

    I am trying to compare two tables, but I want to display values that are the differnet from one to the other,
    both tables have the same columns and have the same PK.

    Thank you.

    Hello

    You probably need a report based on a query like this:

    SELECT
       d1.deptno,
       d1.dname,
       d2.dname,
       d1.loc,
       d2.loc
    FROM
       dept1 d1
       INNER JOIN dept2 d2
       ON d1.deptno = d2.deptno
       AND (      d1.dname <> d2.dname
                OR d1.loc <> d2.loc
              )
    

    You can also consider using FULL JOIN where you have different values of primary key in both tables and you want to include in the report.

Maybe you are looking for