Translate from table of values

oracle 10.2.0.5 ent ed
create table test_1 ( col_1 number, col_2 varchar2(50));
create table test_2 ( col_1 number, col_2 varchar2(15), col_3 varchar2(15));
insert into test_1 values (1, 'this is a string');
insert into test_1 values (2, 'this is a second string');
insert into test_1 values (3, 'this is frist string');
insert into test_2 values (1, 'is a', 'is not a');
insert into test_2 values (2, 'second', 'tenth');
insert into test_2 values (3, 'frist', 'first');
is there a way to write a create table as select from test_1 where the resulting data set would be like the following?
1 this is not a string
2 this is not a tenth string
3 this is first string
in other words replace any sub-string in test_1.col_2 that matches test_2.col2 with that value in test_2.col_3.
I was thinking translate would work by using select statements for the match & replace patterns, but realize that would return multiple records and wouldn't work.
Edited by: 886364 on Nov 16, 2012 10:35 AM

You can use REPLACE function
SQL> with test_1 as
  2      (
  3      select 1 col_1, 'this is a string' col_2 from dual union all
  4      select 2 col_1, 'this is a second string' col_2 from dual union all
  5      select 3 col_1, 'this is frist string' col_2 from dual
  6      ),
  7      test_2 as
  8      (
  9      select 1 col_1, 'is a' col_2, 'is not a' col_3  from dual union all
10      select 2 col_1, 'second' col_2, 'tenth' col_3  from dual union all
11      select 3 col_1, 'frist' col_2, 'first' col_3  from dual
12      )
13  select
14      test_1.col_2,
15      replace(test_1.col_2, test_2.col_2, test_2.col_3) after
16  from
17      test_1,
18      test_2
19  where
20      test_1.col_1 = test_2.col_1;
COL_2                   AFTER
this is a string        this is not a string
this is a second string this is a tenth string
this is frist string    this is first string

Similar Messages

  • Update table a columns using columns from table b (values of 2 columns of table b need to taken from table c)

    Guys,
    I need to update table A columns col3, col4, col5 and col6 by table b columns col3, col4, col5 and col6 however table b col5 and col6 values need to come from table c col1.
    Means table b col5 and col6 have values in it however i need to replace them with value from table c col1 and need to update table a col5 and col6 accordingly.
    table a and table b has col1 and col2 in common.
    i am trying something like this.
    Update a
    a.col3 = b.col3,
    a.col4 = b.col4,
    a.col5 = (select col1 from table_c c where c.col2=b.col5),
    a.col6 = (select col1 from table_c c where c.col2=b.col6)
    from table_A a inner join table_b
    on  a.col1=b.col1 and a.col2=b.col2
    can someone help me reframe above update query?
    thanks in advance for your help.

    Try the below:(If you have multiple values, then you may need to use TOP 1 as commented code in the below script)
    create Table tableA(Col1 int,Col2 int,Col3 int,Col4 int,Col5 int,Col6 int)
    Insert into tableA values(1,2,3,4,5,6)
    create Table tableB(Col1 int,Col2 int,Col3 int,Col4 int,Col5 int,Col6 int)
    Insert into tableB values(1,2,30,40,50,60)
    create Table tableC(Col1 int,Col2 int,Col3 int,Col4 int,Col5 int,Col6 int)
    Insert into tableC values(100,50,30,40,2,2)
    --Insert into tableC values(200,50,30,40,2,2)
    Insert into tableC values(100,60,30,40,2,2)
    Select * From tablea
    Update a Set
    a.col3 = b.col3,
    a.col4 = b.col4,
    a.col5 = (select col1 from tablec c where c.col2=b.col5 ),
    a.col6 = (select col1 from tablec c where c.col2=b.col6 )
    from tableA a inner join tableb b
    on a.col1=b.col1 and a.col2=b.col2
    --Update a Set
    --a.col3 = b.col3,
    --a.col4 = b.col4,
    --a.col5 = (select Top 1 col1 from tablec c where c.col2=b.col5 Order by c.Col1 asc),
    --a.col6 = (select Top 1 col1 from tablec c where c.col2=b.col6 Order by c.Col1 asc)
    --from tableA a inner join tableb b
    --on a.col1=b.col1 and a.col2=b.col2
    Select * From tablea
    Drop table tablea,Tableb,TableC

  • Field is not populating in BDC from Table Control value????

    Hi Experts,
    After adding a new Quantity (MY_QUANTITY) field to the existing Table control, I populated the data from SAP into it.
    Now, the user will change (if he wants) its value, then he clicks the Push Button by expecting the posting of the Document i.e.in other words. the Control encounters the statement of MY_FORM_CREATE_ABAVN_VIA_BDC in my Prog.
    But, MY_QUANTITY (changed, even not changed too) value/s is not passing in to my BDC_DATA table/code?
    I am doing BDC for ABAVN transaction and wanting the Quantity filed of ''Partial Retirement'' tab to b populated in BDC. So, I am using as,
    SAPLAMDP--Screen 100--Field as ANLA-MENGE (its a Subscreen/Tabs of SAP Screen)
    So,
    1) Problem is with my BDC code?
    2) or, ''SAPLAMDP--Screen 100--Field as ANLA-MENGE'' is this wrong?
    3) or else any other?
    Message was edited by:
            Sridhar
    Message was edited by:
            Sridhar
    Message was edited by:
            Sridhar

    Hai sridhar,
    The problem is within the BDC  Code.
    Because For the effect of adding the field there is no correspong change in bdc is done.So record one more time use the latest one(After adding the field)
    Hope this helps you.
    Regds,
    Rama.Pammi

  • Is there an alternate (newer) way to select value 9 from table containing values 1-10 instead of usign MAX?

    I have a table with one column (rowID) and ten rows. The values are the numbers 1 thru 10. I want to select 9. I used the MAX function as follows:
    create table #tmp1(rowID int)
    insert into #tmp1
    values(1),(2),(3),(4),(5),(6),(7),(8),(9),(10)
    select MAX(rowID) as rwID from #tmp1
    where rowID < (select MAX(rowID) from #tmp1)
    --Is there any built in function that can perform this operation -- without the subquery?
    Rich P

    create table #tmp1(rowID int)
    insert into #tmp1
    values(1),(2),(3),(4),(5),(6),(7),(8),(9),(10)
    --select MAX(rowID) as rwID from #tmp1
    --where rowID < (select MAX(rowID) from #tmp1)
    --row_number in a derived table
    select RowID from (
    Select rowID,row_number() Over(Order by rowID DESC) rn from #tmp1) t
    Where rn=2
    --row_number in a CTE
    ;with mycte as (
    Select rowID
    ,row_number() Over(Order by rowID DESC) rn from #tmp1
    SELECT RowID
    FROM mycte
    WHERE rn = 2
    --Lead funtion
    ;with mycte as (
    Select rowID
    ,Lead(rowID,1) Over(Order by rowID DESC) leadRowID from #tmp1
    SELECT top 1 leadRowID
    FROM mycte
    Order by leadRowID DESC
    --Last_Value
    ;with mycte as (
    Select rowID
    ,Last_Value(rowID) Over(ORDER BY rowID DESC ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING ) LastRowID from #tmp1
    SELECT top 1 LastRowID
    FROM mycte
    Order by LastRowID DESC
    --another option to combine top and min
     SELECT min(rowID) 
      FROM (
            SELECT TOP 2 rowID
              FROM #tmp1
             ORDER BY rowID DESC) t
    You can check all these solutions on your table and add an index to the column and test again.You may find one that works better for you.
    drop table #tmp1

  • How create temporary table from list of values

    Can you anybody advise me how can I create temporary table from list of values? I have list of values and need create temporary table for next use with command JOIN etc.
    Thank you for help

    NO, you can not create temporary table in oracle on the fly ( Like #Tabels in SQl Server or Sybase ) , you will have to use the GTT i.e Global Temporary Tables
    check the following link GTT :
    to flush the tables after commit
    CREATE GLOBAL TEMPORARY TABLE my_temp_table (
      column1  NUMBER,
      column2  NUMBER
    ) ON COMMIT DELETE ROWS;In contrast, the ON COMMIT PRESERVE ROWS clause indicates that rows should be preserved until the end of the session.
    so to keep rows in Table after commit
    CREATE GLOBAL TEMPORARY TABLE my_temp_table (
      column1  NUMBER,
      column2  NUMBER
    ) ON COMMIT PRESERVE ROWS;

  • Deleting the values from table control

    HI,
    I need to remove the selected line from the Table control on my screen.
    The point is that the Internal table does not have any records,.
    for example in the Customer Create screen,
    while entering the bank details we will enter it in a tbale contraol.
    but the records doesnt exist in the database. but the record gets deleted from the table control only if we press delete button.
    please guide me.
    please note : I want to delete the record from Table Control on the screen and I dont have any corresponding database records..
    regards

    Hi..
    The solution to your problem - deleting values from table control.
    Here: it_wizard is the internal table which is holding the value of table control.
             wa_wizard is the work are of the internal table it_wizard.
             it_delete is the internal table which holds the deleted record of table control.
             wa_delete is the work area of the internal table it_delete
    Also here the field ZSEL is the character field which is used to select the entire record in the table control.
    LOOP AT it_wizard into wa_wizard WHERE zsel = 'X'.
           MOVE-CORRESPONDING wa_wizard TO wa_delete.
           APPEND wa_delete TO it_delete.
           delete table it_wizard from wa_wizard.
    DELETE  FROM zfin_goods WHERE ZFG = WA_delete-ZFG.
    ENDLOOP
    if sy-subrc eq 0.
    Message 'Delete Successful' type 'S'.
    endif.
    The above code will delete the record from both the table control.internal table and the database table.
    I think this will help you to great extent.
    Ward regards,
    Bhuvaneswari
    Edited by: BHUVANESWARI THIRUNAVUKKARASU on Jan 7, 2009 10:39 AM

  • How can I insert values from table object into a regular table

    I have a table named "ITEM", an object "T_ITEM_OBJ", a table object "ITEM_TBL" and a stored procedure as below.
    CREATE TABLE ITEM
    ITEMID VARCHAR2(10) NOT NULL,
    PRODUCTID VARCHAR2(10) NOT NULL,
    LISTPRICE NUMBER(10,2),
    UNITCOST NUMBER(10,2),
    SUPPLIER INTEGER,
    STATUS VARCHAR2(2),
    ATTR1 VARCHAR2(80),
    ATTR2 VARCHAR2(80),
    ATTR3 VARCHAR2(80),
    ATTR4 VARCHAR2(80),
    ATTR5 VARCHAR2(80)
    TYPE T_ITEM_OBJ AS OBJECT
    ITEMID VARCHAR2(10),
    PRODUCTID VARCHAR2(10),
    LISTPRICE NUMBER(10,2),
    UNITCOST NUMBER(10,2),
    SUPPLIER INTEGER,
    STATUS VARCHAR2(2),
    ATTR1 VARCHAR2(80),
    ATTR2 VARCHAR2(80),
    ATTR3 VARCHAR2(80),
    ATTR4 VARCHAR2(80),
    ATTR5 VARCHAR2(80)
    TYPE ITEM_TBL AS TABLE OF T_ITEM_OBJ;
    PROCEDURE InsertItemByObj(p_item_tbl IN ITEM_TBL, p_Count OUT PLS_INTEGER);
    When I pass values from my java code through JDBC to this store procedure, how can I insert values from the "p_item_tbl" table object into ITEM table?
    In the stored procedure, I wrote the code as below but it doesn't work at all even I can see values if I use something like p_item_tbl(1).itemid. How can I fix the problem?
    INSERT INTO ITEM
    ITEMID,
    PRODUCTID,
    LISTPRICE,
    UNITCOST,
    STATUS,
    SUPPLIER,
    ATTR1
    ) SELECT ITEMID, PRODUCTID, LISTPRICE,
    UNITCOST, STATUS, SUPPLIER, ATTR1
    FROM TABLE( CAST(p_item_tbl AS ITEM_TBL) ) it
    WHERE it.ITEMID != NULL;
    COMMIT;
    Also, how can I count the number of objects in the table object p_item_tbl? and how can I use whole-loop or for-loop to retrieve values from the table object?
    Thanks.

    Sigh. I answered this in your other How can I convert table object into table record format?.
    Please do not open multiple threads. It just confuses people and makes the trreads hard to follow. Also, please remember we are not Oracle employees, we are all volunteers here. We answer questions if we can, when we can. There is no SLA so please be patient.
    Thank you for your future co-operation.
    Cheers, APC

  • Inserting in the UUT_Results table a value that we read from our data base from a local variable

    We would like to include in the UUT_Results table a value that we read from our data base into a local variable during the execution of our sequence file. We found that by modifying the configure database options we were able to add a column for this variable, but the local variable was not available to be placed into an expression for that column from the local variables or parameters. Is it possible to do this, and if so, how? Station Globals were available to be included in the expression, however the sequence file may be executed on more than one system which makes the Global unavailable on systems other than the one where the sequence file originated.

    You can use the TestStand API to programmatically create global variables at runtime, thus ensuring their existence. For example, you could call Engine.Globals.SetValString("GlobalStringVariableName", PropOption_InsertIfMissing, "variable value")
    Of course, if you need to test multiple UUTs in parallel, a single global is not sufficient. In that case you might consider adding the field you need to the UUT datatype in the process model. You could then access the field in your sequence via RunState.Root.Locals.UUT.YourNewField = YourNewValue.
    If you also want your sequence to run without using a process model, you must check for the existence of the UUT before accessing it. You could use the expression function: PropertyExists("RunState.Root.Locals.UUT.YourNewFi
    eld")

  • How to populate a text field by some value from table in Oracle seeded page through Personalization?

    I have to populate Description field by default in AGIS page (Advanced Global Intercompany System).
    Field Description:
    messageTextInput: Description
    VO: FunTrxHeaderVO
    VO Attribute: Description
    VO is entity based.
    Now if the field is null then I have to populate this value by some value from table for selected batch_id.
    Example:
    (SELECT DESCRIPTION FROM fun_trx_batches WHERE batch_id =
    211061)
    Also, this value is being populated in the Batch Information region in the same page. So the problem is also be treated as to copy a value from one messageStyledText to messageTextInput in a same page.
    Can this be done through personalization, w/o coding?
    Please suggest if you any idea how to resolve..
    Regards,
    Pahari

    Not sure why it is not displying in the front page list??
    I have to search it.
    Admin team, please help.
    Regards,
    Pahari

  • How to take Purchase order Pending quantity value from Table. ?

    Hai SAP Gurus,
                             Now Using ME2N, I am taking Pending Purchase Order Value against Plant wise & Material Type wise. Its takes lomg time to see this report.. Kindly guide me  how to takes those value from table..?
    ex:  Material Type     Plant 1
           RM                     1716294228
           HIBE                         63586533
           ERSA         27143712
           VERP      7551982745
           Components      7375781142
           Total                    Rs. 16734788360

    Hi
    It is possible through ME2N plantwise pend PO report.
    Put plant and WE101 in selection parameters

  • Reading any value from table into a string (Especially date etc..)

    How would I read any value from a table into a string?
    Currently doing the following...
    data ret_val type string.
    select single (wa_map-qes_field) from z_qekko into ret_val
    where
    angnr = _angnr.
    When the source field is a date it bombs though.
    The result goes into a BDCDATA-fval.
    regards
    Dylan.

    Tried...
    1    DATA: lp_data TYPE REF TO DATA.
    2    FIELD-SYMBOLS: <value> TYPE ANY.
    3    CREATE DATA lp_data LIKE (wa_map-qes_field).
    4    ASSIGN lp_data->* TO <value>.
    5    SELECT SINGLE (wa_map-qes_field) FROM zquadrem_qekko INTO <value> WHERE angnr = _angnr.
    Complains that (wa_map-qes_field) is not defined in line 3.
    Think that the bracket thing is only available via SQL.
    What about CREATE DATA lp_data type ref to object. ?
    Would the above declaration work?
    regards

  • Deleting rows from table based on value from other table

    Hello Members,
    I am struck to solve the issue said below using query. Would appreciate any suggestions...
    I have two tables having same structures. I want to delete the rows from TableA ( master table ) with the values from TableB ( subset of TableA). The idea is to remove the duplicate values from tableA. The data to be removed are present in TableB. Catch here is TableB holds one row less than TableA, for example
    Table A
    Name Value
    Test 1
    Test 1
    Test 1
    Hello 2
    Good 3
    TableB
    Name Value
    Test 1
    Test 1
    The goal here is to remove the two entries from TableB ('Test') from TableA, finally leaving TableA as
    Table A
    Name Value
    Test 1
    Hello 2
    Good 3
    I tried below queries
    1. delete from TestA a where rowid = any (select rowid from TESTA b where b.Name = a.Name and a.Name in ( select Name from TestB ));
    Any suggestions..
    We need TableB. The problem I mentioned above is part of process. TableB contains the duplicate values which should be deleted from TableA. So that we know what all values we have deleted from TableA. On deleted TableA if I later insert the value from TableB I should be getting the original TableA...
    Thanks in advance

    drop table table_a;
    drop table table_b;
    create table  table_b as
    select 'Test' name, 1 value from dual union all
    select 'Test' ,1 from dual;
    create table table_a as
    select 'Test' name, 1 value from dual union all
    select 'Test' ,1 from dual union all
    select 'Test' ,1 from dual union all
    select 'Hello' ,2 from dual union all
    select 'Good', 3 from dual;
    /* Formatted on 11/23/2011 1:53:12 PM (QP5 v5.149.1003.31008) */
    DELETE FROM table_a
          WHERE ROWID IN (SELECT rid
                            FROM (SELECT ROWID rid,
                                         ROW_NUMBER ()
                                         OVER (PARTITION BY name, VALUE
                                               ORDER BY NULL)
                                            rn
                                    FROM table_a a
                                   WHERE EXISTS
                                            (SELECT 1
                                               FROM table_b b
                                              WHERE a.name = b.name
                                                    AND a.VALUE = b.VALUE))
                           WHERE rn > 1);
    select * from table_a
    NAME     VALUE
    Test     1
    Hello     2
    Good     3Edited by: pollywog on Nov 23, 2011 1:55 PM

  • How extract a value from table?

    how extract a value only from table with labview 5.0?

    Hi T4l
    I modified you VI to extract a selected row from the table. This is quite simple by done by using the index array function. Hope this helps
    B Bakels
    Labview CLD , Engineer/Manager
    Promedes and DSM
    using LV 7.1, 8.0, 8.2, 8.5 and 2009 SP1
    http://www.promedes.nl
    Attachments:
    Untitled 2.vi ‏16 KB

  • Fetch value from Table with respect to APP_USER.

    Hi,
    i want to fetch value from Table with respect to APP_USER.
    i am using
    SELECT ID,NAME,FILE_OBJ_ID,MIME_TYPE,DOC_SIZE,BLOB_CONTENT,DESCRIPTION,UPLOAD_DATE,'Download' FROM DUMY_FILE where CREATED_BY =:APP_USER;
    Show me error
    failed to parse SQL query:
    ORA-00911: invalid characterThanks
    Edited by: 805629 on Jan 13, 2011 2:09 AM

    Hello,
    I too have the same problem.
    I am using this query:
    select manager from leave_mgmt where support_engg=:APP_USER
    and source type is SQL Query(return single value)
    but nothing is coming up in the text field. Its empty.
    Please advice. Thanks in advance.

  • Translation language 'FR' entires all got removed from table: RSZELTTXT

    Hi All,
    We are doing global BI implementation.
    We need the reports run in English and French.
    We have spent a great amount of time and made the needed entries for translation in French language, in the table: RSZELTXT, for all the english entries corresponding to all BW query elements.
    Today suddenly, we have found that all the entries related to 'FR' language got completely removed.
    All the BW team members are pretty sure that no body touched this table.
    How could this happen?
    Thanks in advance.
    Thanks & Best Regards,
    - Shashi

    Hi All,
    I have mistyped the table name in the body of the thread;
    Here is the correct one;
    Translation language 'FR' entires all got removed from table: RSZELTTXT
    Thanks,
    - Shashi

Maybe you are looking for

  • I upgraded iPhoto after upgrading to maverick. It will not open.

    Does anyone know what to do to get iPhoto's to owrk after upgrading?

  • ThinkPad USB Keyboard Driver SK-8855

    The ThinkPad USB Keyboard SK-8855 is not listed in the driver matrix.  I can only find the one for the newer 55Y9003.  Help?  Does anybody know if the newer driver works with the older keyboard?

  • Logic 8 freezes and unfreezes when moving plugins on screen?

    I have a problem with Logic. When I move a plugin from one place to another on the screen, it will get "stuck", and the spinning wheel will appear for 20-40 seconds. Sometimes the graphic in the plugin doesn't get updated after this problem occurs. I

  • Ant Build File Invalid

    Hello, I am trying to create a simple build.xml, but for some reason JDev will not acknowledge it as a valid ant file. Below is my ant file. How do I tell JDev its a valid ant file? I guess I should say that I am trying to integrate JDev JUnit with C

  • Function like decode ??

    How write a function similar to decode which takes variables arguments? My need is I need to get a concatanated string seperated by a separator indepedent of how many arguments I pass in to a function. How can I do that? Any help/pointers is highly a