Best way to replace characters

Hi
Im having some data corruption on the database where the german letters have been replaced by certain symbols.
These letters have been replaced by:
ü = }
ä = {
ö = |
So instead of Grübbestrasse, its Gr}bbestrasse.
I now want update alot of this data but Im considering which way is the best to go.
One way which Iv considered (but I dont think is the best) is this:
I substring the address from start pos 0 to pos where the "}" ends (then minus 1) - concat with the real letter - subString where the "}" starts and where the column ends.
update address_table
set address_1 = subStr(address1,0,(instr(address1,'}')-1)) ||'ü'|| subStr(address1,(inStr(address11,'}')+1),20)
Do you have any better ideas ?
Because I know this will not work if I have more then 1 wrong character in the same address.
Cheers

Hi,
You can use the replace function to perform that:
UPDATE address_table
   SET address_1 = replace(address1, '}', 'ü');or the translate to run all those in a single pass:
with address_table as (
select 'Gr}bbestrasse {|' address_1 from dual)
select replace(address_1, '}', 'ü'),
       translate(address_1, '}{|', 'üäö')
  from address_tableYou just need to be sure there won't be false-positives where the '}' character was correctly there.
[ Docs on the Replace function|http://download.oracle.com/docs/cd/E11882_01/server.112/e10592/functions151.htm#SQLRF00697]
Regards
Edited by: fsitja on Jan 27, 2010 3:45 PM edited as Michaels did it too. Too bad I have no idea what those mean... had to Google it to try and figure out. :)

Similar Messages

  • Best way to replace move in iDVD project?

    Hello,
    I have an iDVD project started and realized I wanted to change a couple details in the iMovie I imported to the project. I can go back and correct the iMovie, but what's the best way to replace the current movie in the iDVD project with the revised iMovie? I'd rather not have to start a new iDVD project and add the pictures to the drop zones etc. Thank you, Rick H.

    I forgot that if I hit 'return' the forum cuts what I write. Once I've got a movie in an iDVD project, what's the best way to replace that movie with a revised version (if I realize I need to make a couple changes in iMovie? Do you just go to the map and manually delete everything except the main title? Thanks, Rick.

  • What's the best way to replace front glass on an iPhone 4?

    My grandson has a 4 and has cracked the front glass. Trying to find the best cost effective way to replace the glass.

    i don\'t want an alias!! wrote:
    What's the best way to replace front glass on an iPhone 4?
    Take it to an Apple Store for out of warranty exchange fro $149.
    This way you get a refurb iPhone including new battery.
    See this -> http://support.apple.com/kb/index?page=servicefaq&geo=United_States&product=ipho ne
    Out-of-Warranty Service
    If you own an iPhone that is ineligible for warranty service but is eligible for Out-of-Warranty (OOW) Service, Apple will service your iPhone for the Out-of-Warranty Service fee listed below.
    iPhone model
    Out-of-Warranty Service
    iPhone 5s, iPhone 5c,
    iPhone 5
    $269
    iPhone 4S
    $199
    iPhone 4, iPhone 3GS,
    iPhone 3G, Original iPhone
    $149

  • What is the best way to replace the Inline Views for better performance ?

    Hi,
    I am using Oracle 9i ,
    What is the best way to replace the Inline Views for better performance. I see there are lot of performance lacking with Inline views in my queries.
    Please suggest.
    Raj

    WITH plus /*+ MATERIALIZE */ hint can do good to you.
    see below the test case.
    SQL> create table hx_my_tbl as select level id, 'karthick' name from dual connect by level <= 5
    2 /
    Table created.
    SQL> insert into hx_my_tbl select level id, 'vimal' name from dual connect by level <= 5
    2 /
    5 rows created.
    SQL> create index hx_my_tbl_idx on hx_my_tbl(id)
    2 /
    Index created.
    SQL> commit;
    Commit complete.
    SQL> exec dbms_stats.gather_table_stats(user,'hx_my_tbl',cascade=>true)
    PL/SQL procedure successfully completed.
    Now this a normal inline view
    SQL> select a.id, b.id, a.name, b.name
    2 from (select id, name from hx_my_tbl where id = 1) a,
    3 (select id, name from hx_my_tbl where id = 1) b
    4 where a.id = b.id
    5 and a.name <> b.name
    6 /
    Execution Plan
    0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=7 Card=2 Bytes=48)
    1 0 HASH JOIN (Cost=7 Card=2 Bytes=48)
    2 1 TABLE ACCESS (BY INDEX ROWID) OF 'HX_MY_TBL' (TABLE) (Cost=3 Card=2 Bytes=24)
    3 2 INDEX (RANGE SCAN) OF 'HX_MY_TBL_IDX' (INDEX) (Cost=1 Card=2)
    4 1 TABLE ACCESS (BY INDEX ROWID) OF 'HX_MY_TBL' (TABLE) (Cost=3 Card=2 Bytes=24)
    5 4 INDEX (RANGE SCAN) OF 'HX_MY_TBL_IDX' (INDEX) (Cost=1 Card=2)
    Now i use the with with the materialize hint
    SQL> with my_view as (select /*+ MATERIALIZE */ id, name from hx_my_tbl where id = 1)
    2 select a.id, b.id, a.name, b.name
    3 from my_view a,
    4 my_view b
    5 where a.id = b.id
    6 and a.name <> b.name
    7 /
    Execution Plan
    0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=8 Card=1 Bytes=46)
    1 0 TEMP TABLE TRANSFORMATION
    2 1 LOAD AS SELECT
    3 2 TABLE ACCESS (BY INDEX ROWID) OF 'HX_MY_TBL' (TABLE) (Cost=3 Card=2 Bytes=24)
    4 3 INDEX (RANGE SCAN) OF 'HX_MY_TBL_IDX' (INDEX) (Cost=1 Card=2)
    5 1 HASH JOIN (Cost=5 Card=1 Bytes=46)
    6 5 VIEW (Cost=2 Card=2 Bytes=46)
    7 6 TABLE ACCESS (FULL) OF 'SYS_TEMP_0FD9D6967_3C610F9' (TABLE (TEMP)) (Cost=2 Card=2 Bytes=24)
    8 5 VIEW (Cost=2 Card=2 Bytes=46)
    9 8 TABLE ACCESS (FULL) OF 'SYS_TEMP_0FD9D6967_3C610F9' (TABLE (TEMP)) (Cost=2 Card=2 Bytes=24)
    here you can see the table is accessed only once then only the result set generated by the WITH is accessed.
    Thanks,
    Karthick.

  • What's the best way to replace a 60 W Mag Safe Power Adapter?

    What's the best way to replace a 60 W Mag Safe Power Adapter for a Macbook Pro?

    Buy one from Apple!!

  • The best way to replace the internal hard drive

    Hi,
    I have a MacBook with a 160gb hard drive which has been partitioned into two partitions one for OSX (130gb) and the other for Windows 7(30gb) and as you can imagine 30gigs for windows is almost nothing, the OS itself is taking a big percentage of its capacity, so I would like to expand both partitions by having a bigger hard drive installed but I was wondering what would bethe best way to do this so I don’t have to reinstall OSX and Windows 7, I have heard about Super Duper for OSX I don’t know if a similar software exists for Windows, well I don't even know if this is the way to go. So my question would is...
    What would be the best way to replace an internal hard drive and have everything moved including the Operating Systems (OSX Lion and Windows7)?
    Can someone be so kind and tell me the procedure I should follow to accomplish this task? I’m not expecting a step by step tutorial but if you could list the tools needed and a brief procedure it would be greatly appreciated.
    Oh, I’m using Boot Camp for the Windows 7 installation.
    Thanks a lot.

    For a hard drive try Newegg.com http://www.newegg.com/Store/SubCategory.aspx?SubCategory=380&name=Laptop-Hard-Dr ives&Order=PRICE
    Or OWC  http://eshop.macsales.com/shop/hard-drives/2.5-Notebook/
    Here's instructions on replacingthe hard drive http://creativemac.digitalmedianet.com/articles/viewarticle.jsp?id=45088
    To transfer your current hard drive I like the free application Carbon Copy Cloner. It makes a bootable copy of everything on your hard drive http://www.bombich.com/index.html You'll need a cheap SATA external hard drive case. Put the new drive in the case then partition and format the new drive and clone your old drive to the new one. Check that it's set up right by booting up from the external drive. Then replace your old hard drive with the new one.
    Here's a cheap SATA external hard drive case on eBay http://cgi.ebay.com/USB-2-5-SATA-HDD-HARD-DRIVE-EXTERNAL-ENCLOSURE-CASE-BOX-/120 636286623?pt=PCC_Drives_Storage_Internal&hash=item1c167ba69f
    For copying the Windows partition I like WinClone http://download.cnet.com/Winclone/3000-2242_4-172338.html
    After you've installed your Mac OS with Carbon Copy Cloner (or SuperDuper) on the new drive create a new Windows partition with Boot Camp and copy your WinClone copy to it with Winclone.

  • Best way to Replace OLD Time Capsule with a new one

    What is the best way to replace an old Time capsule with a new Time Capsule in an existing wireless network?

    IMHO..
    Start over..
    Put the new TC in place and configure .. completely differently to the old one. That means you have to go around and reset everything to connect if you use wireless.. and you should forget all the old configuration beforehand.
    You can of course try and slip it in using identical names and identical settings.. but the computers are not fooled.. the BSSID is different. And other issues tend to arise.
    Use naming that is short, no spaces and pure alphanumeric.
    See Pondini post C9 here.
    http://pondini.org/TM/Troubleshooting.html
    It may take more time to start with.. depending on how many devices you have.. but in the end, you can get much less problems out the other side.. which are extraordinarily hard to diagnose and fix..
    But that is IMHO.. others are welcome to dispute that and may find a full swap using old settings copied to a file and copied back to the new TC work fine.
    There are any number of posts around about doing just that.
    I will post one if I see it..
    I do confess to being a bit of a purist when it comes to this stuff.. but then I used to do computer support and trying to fix the messes people got themselves into .. inevitably they tried to cut corners.. instead of doing the setup from scratch.

  • Hi, what's the best way to replace IMAC 27'' glass when broken (latest Imac generation from end 2012) ?  Thanks,

    Hi, what's the best way to replace IMAC 27'' glass when broken (latest Imac generation from end 2012) ?  Thanks,

    Not sure about the 2012 models but the 2010 ones can be removed in seconds, using a suction cup on the top corner. I use my tomtom to lift it away. It is attached by magnets.
    Hope this helps.

  • Decoding- best way to decode characters to numbers using a conversion table

    I have input string which mostly contains numbers, but at the end there are 2 characters which means a country code, like 'EE' for estonia, or 'LV' for latvia and so on, see example input value:
    select '9999123456789012EE00' input, null output from dual;I want into column Output to put value where those 2 characters are decoded/replaced with numbers with following algorithm:
    1. replace in input string 9999123456789012EE00 characters with numbers 14 and 14 so the output would be 9999123456789012141400.
    2. The 14 was for specially letter 'E', all alphabet is encoded like following:
    A=10
    B=11
    C=12
    D=13
    E=14
    Y=34
    Z=35
    So, value "9999123456789012LV00" should be converted into 9999123456789012213100 (L = 21, V =31).
    What is the best way to achieve such decoding in plsql/sql?
    Edited by: CharlesRoos on Mar 16, 2010 3:52 AM

    Thx, Seems very nice.
    with t as (
      select '9999123456789012LV00' input from dual 
      union all
      select '9999123456789012AA00' input from dual
      union all
      select '9AA99912345678901200' input from dual
    select input,
           regexp_replace (input,  '[[:alpha:]]+',
                           (ascii (regexp_substr (input, '[[:alpha:]]')) - 55) || (ascii (regexp_substr (input, '[[:alpha:]]',1,2)) - 55))output
    from t
    9999123456789012LV00     9999123456789012213100
    9999123456789012AA00     9999123456789012101000
    9AA99912345678901200     9101099912345678901200
    ;

  • What is the best way of replacing words in a text file ?

    i want to read in a text file and when i come across a certain word, i want to change it to something else. Whats the best way to do this ?
    If i read in a line at a time, how would i only replace one word and not the rest of the line ?
    thanks

    thanks it works !!! But i wrote the contents to a new file.
    How do i overwrite the same file ? I put the the input and output file as the same location but it overwrites the original file with a blank one.
    i guess i have to write into another buffer and read all lines first before overwriting the file right ? how should i do that ?
    also, i only want to overwrite the file ONLY if applies replaceAll method, otherwise if no replacing takes place i dont want to keep updating the file everytime.

  • [8i] Best way to replace "similar" values with one value...?

    Below is some sample data:
    Sorry for the large set / complex set of sample data, but there should be no need to go through it in detail =).
    2 things to keep in mind:
    1) This is an 8i db
    2) I cannot create any new tables within this db, though I can create views
    CREATE TABLE     ord_master
    (     part_nbr          CHAR(25)
    ,     ord_nbr          CHAR(10)
    ,     sub_ord_nbr     CHAR(3)
    ,     ord_type          CHAR(2)
    ,     ord_stat          CHAR(2)
    ,     date_closed     DATE
    -- please note, though none of the columns in ord_master are explicitly defined as NOT NULL,
    -- none of them are NULL in the db, and given how things are input into the table, I don't
    -- even think it's possible
    -- a unique order is described by ord_nbr, sub_ord_nbr.  there should only be one record in
    -- this table for a given unique combination of those columns, though they are not the p.k.
    -- NOTE: dates default to 12/31/1900, so in the table above, if an order is still open (thus,
    -- not closed), it's date_closed will be 12/31/1900.  It will only change once the order closes.
    INSERT INTO     ord_master
    VALUES     ('ABC-123','1','1','AA','CL',TO_DATE('05/01/2009','mm/dd/yyyy'));
    INSERT INTO     ord_master
    VALUES     ('ABC-123','1','2','AA','CL',TO_DATE('9/14/2009','mm/dd/yyyy'));
    INSERT INTO     ord_master
    VALUES     ('ABC-123','2','1','AA','CL',TO_DATE('12/03/2009','mm/dd/yyyy'));
    INSERT INTO     ord_master
    VALUES     ('ABC-123','3','1','AA','OP',TO_DATE('12/31/1900','mm/dd/yyyy'));
    INSERT INTO     ord_master
    VALUES     ('ABC-123','4','1','AA','CL',TO_DATE('03/12/2004','mm/dd/yyyy'));
    INSERT INTO     ord_master
    VALUES     ('XYZ-123','5','1','AA','CL',TO_DATE('03/12/2004','mm/dd/yyyy'));
    CREATE TABLE     op_detail
    (     ord_nbr          CHAR(10)
    ,     sub_ord_nbr     CHAR(3)
    ,     major_seq_nbr     CHAR(4)
    ,     wctr_id          CHAR(5)
    ,     oper_stat          CHAR(2)
    ,     plan_su_rsrc     NUMBER(5,2)
    ,     plan_run_rsrc     NUMBER(11,8)
    ,     plan_subc_amt     NUMBER(15,5)
    ,     act_su_rsrc     NUMBER(5,2)
    ,     act_run_rsrc     NUMBER(7,2)
    ,     act_subc_amt     NUMBER(15,2)
    ,     act_start_dt     DATE
    ,     dt_completed     DATE
    ,     qty_planned     NUMBER(13,4)
    ,     qty_recvd          NUMBER(13,4)
    ,     qty_complete     NUMBER(13,4)
    ,     qty_scrap          NUMBER(13,4)
    ,     qty_on_hold     NUMBER(13,4)
    -- similar to ord_master, thought none of the columns are explicitly defined as NOT NULL,
    -- none of the records have NULL values for any of these columns, and I don't think it's
    -- really possible with the way the system is
    INSERT INTO     op_detail
    VALUES     ('1', '1', '0081', 'X516 ', 'CP', 0, 0, 0, 0, .2, 0, TO_DATE('02/03/2010', 'mm/dd/yyyy'), TO_DATE('02/03/2010', 'mm/dd/yyyy'), 3, 3, 3, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('1', '1', '0324', 'Y000 ', 'CP', .1, .2, 0, 0, .87, 0, TO_DATE('04/06/2010', 'mm/dd/yyyy'), TO_DATE('04/06/2010', 'mm/dd/yyyy'), 3, 3, 3, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('1', '1', '0170', 'X928 ', 'CP', 0, 0, 9.6, 0, 0, 159, TO_DATE('03/05/2010', 'mm/dd/yyyy'), TO_DATE('03/05/2010', 'mm/dd/yyyy'), 3, 3, 3, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('1', '1', '0130', 'H211 ', 'CP', .5, .1, 0, .08, .63, 0, TO_DATE('02/10/2010', 'mm/dd/yyyy'), TO_DATE('02/10/2010', 'mm/dd/yyyy'), 3, 3, 3, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('1', '2', '0120', 'H214 ', 'CP', .3, .05, 0, 0, .68, 0, TO_DATE('05/22/2009', 'mm/dd/yyyy'), TO_DATE('05/22/2009', 'mm/dd/yyyy'), 3, 3, 3, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('1', '2', '0122', 'T203 ', 'CP', 2.5, 1, 0, .67, .3, 0, TO_DATE('05/28/2009', 'mm/dd/yyyy'), TO_DATE('05/28/2009', 'mm/dd/yyyy'), 3, 3, 3, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('1', '2', '0130', 'H211 ', 'CL', .5, .1, 0, .67, .3, 0, TO_DATE('05/28/2009', 'mm/dd/yyyy'), TO_DATE('05/28/2009', 'mm/dd/yyyy'), 3, 3, 3, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('1', '2', '0170', 'X928 ', 'CP', 0, 0, 9.6, 0, 0, 153.12, TO_DATE('06/10/2009', 'mm/dd/yyyy'), TO_DATE('06/10/2009', 'mm/dd/yyyy'), 3, 3, 3, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('1', '2', '0324', 'Y000 ', 'CP', .1, .2, 0, 0, .08, 0, TO_DATE('06/17/2009', 'mm/dd/yyyy'), TO_DATE('06/17/2009', 'mm/dd/yyyy'), 3, 3, 3, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('2', '1', '0081', 'X516 ', 'CL', 0, 0, 0, 0, 0, 0, TO_DATE('07/20/2009', 'mm/dd/yyyy'), TO_DATE('07/20/2009', 'mm/dd/yyyy'), 4, 4, 4, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('2', '1', '0324', 'Y000 ', 'CL', .1, .2, 0, 0, 3.03, 0, TO_DATE('09/11/2009', 'mm/dd/yyyy'), TO_DATE('09/11/2009', 'mm/dd/yyyy'), 4, 4, 4, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('2', '1', '0170', 'X928 ', 'CP', 0, 0, 9.6, 0, 0, 204.16, TO_DATE('08/11/2009', 'mm/dd/yyyy'), TO_DATE('08/11/2009', 'mm/dd/yyyy'), 4, 4, 4, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('2', '1', '0130', 'H211 ','CP', .5, .1, 0, 1.97, 2.67, 0, TO_DATE('07/28/2009', 'mm/dd/yyyy'), TO_DATE('07/29/2009', 'mm/dd/yyyy'), 4, 4, 4, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('3', '1', '0170', 'X928 ', 'CP', 0, 0, 9.6, 0, 0, 255.2, TO_DATE('11/06/2009', 'mm/dd/yyyy'), TO_DATE('11/06/2009', 'mm/dd/yyyy'), 5, 5, 5, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('3', '1', '0130', 'H212 ', 'CP', .5, .1, 0, .6, .03, 0, TO_DATE('10/21/2009', 'mm/dd/yyyy'), TO_DATE('10/21/2009', 'mm/dd/yyyy'), 5, 5, 5, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('3', '1', '0550', 'R501 ', 'WK', 1, 16, 0, 2.2, 12.4, 0, TO_DATE('05/19/2010', 'mm/dd/yyyy'), TO_DATE('12/31/1900', 'mm/dd/yyyy'), 5, 5, 5, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('3', '1', '0324', 'Y000 ', 'CL', .1, .2, 0, 0, .07, 0, TO_DATE('02/04/2010', 'mm/dd/yyyy'), TO_DATE('02/04/2010', 'mm/dd/yyyy'), 5, 5, 5, 0, 0);
    INSERT INTO     op_detail
    VALUES     ('4', '1', '0324', 'Y000 ', 'CP', .1, .2, 0, 0, .59, 0, TO_DATE('02/06/2004', 'mm/dd/yyyy'), TO_DATE('02/06/2004', 'mm/dd/yyyy'), 4, 4, 4, 0, 0);This is the query I'm working with right now:
    SELECT     o.part_nbr               
    ,          s.major_seq_nbr          AS op_nbr
    ,          CASE          -- CASE statement to replace similar-to wctr_id's with a single new wctr_id, so we can treat them as the same
                   WHEN     s.wctr_id     IN ('H211','H212')
                   THEN     'Z211'
                   ELSE     s.wctr_id
              END                         AS wctr
    ,          MIN(s.plan_su_rsrc)          AS min_plan_setup
    ,          AVG(s.plan_su_rsrc)          AS avg_plan_setup
    ,          MAX(s.plan_su_rsrc)          AS max_plan_setup
    ,          STDDEV(s.plan_su_rsrc)     AS sdev_plan_setup
    ,          MIN(s.plan_run_rsrc)     AS min_plan_run
    ,          AVG(s.plan_run_rsrc)     AS avg_plan_run
    ,          MAX(s.plan_run_rsrc)     AS max_plan_run
    ,          STDDEV(s.plan_run_rsrc)     AS sdev_plan_run
    ,          MIN(s.plan_subc_amt)     AS min_plan_subc
    ,          AVG(s.plan_subc_amt)     AS avg_plan_subc
    ,          MAX(s.plan_subc_amt)     AS max_plan_subc
    ,          STDDEV(s.plan_subc_amt)     AS sdev_plan_subc
    ,          MIN(s.act_su_rsrc)          AS min_act_setup
    ,          AVG(s.act_su_rsrc)          AS avg_act_setup
    ,          MAX(s.act_su_rsrc)          AS max_act_setup
    ,          STDDEV(s.act_su_rsrc)     AS sdev_act_setup
    ,          MIN(s.act_run_rsrc)          AS min_act_run
    ,          AVG(s.act_run_rsrc)          AS avg_act_run
    ,          MAX(s.act_run_rsrc)          AS max_act_run
    ,          STDDEV(s.act_run_rsrc)     AS sdev_act_run
    ,          MIN(s.act_subc_amt)          AS min_act_subc
    ,          AVG(s.act_subc_amt)          AS avg_act_subc
    ,          MAX(s.act_subc_amt)          AS max_act_subc
    ,          STDDEV(s.act_subc_amt)     AS sdev_act_subc     
    ,          MIN(s.act_start_dt)          AS min_start
    ,          MAX(s.act_start_dt)          AS max_start
    ,          MIN(s.dt_completed)          AS min_comp
    ,          MAX(s.dt_completed)          AS max_comp
    ,          MIN(s.qty_planned)          AS min_qty_plan
    ,          AVG(s.qty_planned)          AS avg_qty_plan
    ,          MAX(s.qty_planned)          AS max_qty_plan
    ,          STDDEV(s.qty_planned)     AS sdev_qty_plan
    ,          MIN(s.qty_recvd)          AS min_qty_recvd
    ,          AVG(s.qty_recvd)          AS avg_qty_recvd
    ,          MAX(s.qty_recvd)          AS max_qty_recvd
    ,          STDDEV(s.qty_recvd)          AS sdev_qty_recvd
    ,          MIN(s.qty_complete)          AS min_qty_comp
    ,          AVG(s.qty_complete)          AS avg_qty_comp
    ,          MAX(s.qty_complete)          AS max_qty_comp
    ,          STDDEV(s.qty_complete)     AS sdev_qty_comp
    ,          MIN(s.qty_scrap)          AS min_qty_scrap
    ,          AVG(s.qty_scrap)          AS avg_qty_scrap
    ,          MAX(s.qty_scrap)          AS max_qty_scrap
    ,          STDDEV(s.qty_scrap)          AS sdev_qty_scrap
    ,          MIN(s.qty_on_hold)          AS min_qty_hold
    ,          AVG(s.qty_on_hold)          AS avg_qty_hold
    ,          MAX(s.qty_on_hold)          AS max_qty_hold
    ,          STDDEV(s.qty_on_hold)     AS sdev_qty_hold
    ,          COUNT(*)                    AS rec_cnt
    ,          CASE
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-12)
                   THEN     '12 mos. back'
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-24)
                   THEN     '24 mos. back'
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-36)
                   THEN     '36 mos. back'
                   ELSE '37 mos. back +'
              END                         AS time_period
    FROM          ord_master o
    ,          op_detail     s
    ,          (     -- begin in-line view a, to get the min act_start_dt for each order
              SELECT     s1.ord_nbr
              ,          s1.sub_ord_nbr
              ,          MIN     (
                             CASE
                                  WHEN     s1.act_start_dt     > TO_DATE('01/01/2000','mm/dd/yyyy')
                                  THEN     s1.act_start_dt
                             END
                             )          AS ord_min_start
              FROM          op_detail s1
              GROUP BY     s1.ord_nbr
              ,          s1.sub_ord_nbr
              ) a     -- end in-line view a          
    WHERE     o.ord_nbr          = s.ord_nbr
    AND          o.sub_ord_nbr     = s.sub_ord_nbr
    AND          o.ord_nbr          = a.ord_nbr
    AND          o.sub_ord_nbr     = a.sub_ord_nbr
    AND          o.ord_type     = 'AA'
    AND          o.ord_stat     IN ('CL','OP')
    AND          s.oper_stat     IN ('CL','CP')
    GROUP BY     o.part_nbr
    ,          s.major_seq_nbr
    ,          CASE          -- CASE statement to replace similar-to wctr_id's with a single new wctr_id, so we can treat them as the same
                   WHEN     s.wctr_id     IN ('H211','H212')
                   THEN     'Z211'
                   ELSE     s.wctr_id
              END
    ,          CASE
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-12)
                   THEN     '12 mos. back'
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-24)
                   THEN     '24 mos. back'
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-36)
                   THEN     '36 mos. back'
                   ELSE '37 mos. back +'
              END
    ORDER BY     o.part_nbr
    ,          CASE
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-12)
                   THEN     '12 mos. back'
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-24)
                   THEN     '24 mos. back'
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-36)
                   THEN     '36 mos. back'
                   ELSE '37 mos. back +'
              END
    ,          s.major_seq_nbrThis gives me a bunch of descriptive statistics on some data stored in the database, broken into groups by the time period.
    I have 7 sets of possible values for the column wctr_id that are groups of similar/same work centers, and should be treated as the same, assuming the ord_nbr, sub_ord_nbr, and major_seq_nbr are the same. In my example case statement above, anytime I find 'H211' or 'H212', I am replacing it with 'Z211', which is my new, unique identifier for any wctr in the group ('H211', 'H212'). I have 7 of these sorts of groups that need to be replaced by a new, unique identifier. Is my CASE statement (noted above) the best way to do this, or is there a better way? These groups of similar-to wctr_id's are not listed in a table anywhere.

    Hi,
    As always, thanks for posting the CREATE TABLE and INSERT statements; that's very helpful, and leads to faster, better solutions.
    Another thing that is helpful, and promotes faster, better solutions, is to simplify your problem.
    For example, you have to compute a lot of aggregates, but it looks like you already know how to do that. This problem only involves the CASE expressions, and how they interact with the GROUP BY clause. So just cut out most of the aggregate functions.
    Also, it looks like the intricacies of in-line view a have nothing to do with your current problem. For purposes of posting this problem, pretend that a is a regular view, so it doesn't clutter up the main query.
    I think your problem could be restated like this:
    You already have a query like this:
    CREATE OR REPLACE VIEW a
    AS
              SELECT     s1.ord_nbr
              ,          s1.sub_ord_nbr
              ,          MIN     (
                             CASE
                                  WHEN     s1.act_start_dt     > TO_DATE('01/01/2000','mm/dd/yyyy')
                                  THEN     s1.act_start_dt
                             END
                             )          AS ord_min_start
              FROM          op_detail s1
              GROUP BY     s1.ord_nbr
              ,          s1.sub_ord_nbr
    SELECT     o.part_nbr               
    ,          s.major_seq_nbr          AS op_nbr
    ,          CASE          -- CASE statement to replace similar-to wctr_id's with a single new wctr_id, so we can treat them as the same
                   WHEN     s.wctr_id     IN ('H211','H212')
                   THEN     'Z211'
                   ELSE     s.wctr_id
              END                         AS wctr
    ,          MIN(s.plan_su_rsrc)          AS min_plan_setup
              -- lots of other agtgregates go here in real query
    ,          CASE
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-12)
                   THEN     '12 mos. back'
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-24)
                   THEN     '24 mos. back'
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-36)
                   THEN     '36 mos. back'
                   ELSE '37 mos. back +'
              END                         AS time_period
    FROM          ord_master o
    ,          op_detail     s
    ,          a          -- in real query, a is an in-line view
    WHERE     o.ord_nbr          = s.ord_nbr
    AND          o.sub_ord_nbr     = s.sub_ord_nbr
    AND          o.ord_nbr          = a.ord_nbr
    AND          o.sub_ord_nbr     = a.sub_ord_nbr
    AND          o.ord_type     = 'AA'
    AND          o.ord_stat     IN ('CL','OP')
    AND          s.oper_stat     IN ('CL','CP')
    GROUP BY     o.part_nbr
    ,          s.major_seq_nbr
    ,          CASE          -- CASE statement to replace similar-to wctr_id's with a single new wctr_id, so we can treat them as the same
                   WHEN     s.wctr_id     IN ('H211','H212')
                   THEN     'Z211'
                   ELSE     s.wctr_id
              END
    ,          CASE
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-12)
                   THEN     '12 mos. back'
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-24)
                   THEN     '24 mos. back'
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-36)
                   THEN     '36 mos. back'
                   ELSE '37 mos. back +'
              END
    ORDER BY     o.part_nbr
    ,          CASE
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-12)
                   THEN     '12 mos. back'
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-24)
                   THEN     '24 mos. back'
                   WHEN a.ord_min_start     >     ADD_MONTHS(SYSDATE,-36)
                   THEN     '36 mos. back'
                   ELSE '37 mos. back +'
              END
    ,          s.major_seq_nbr
    ;that produces this output:
    `                       MIN_
                           PLAN_
    PART_NBR   OP_N WCTR   SETUP TIME_PERIOD
    ABC-123    0081 X516      .0 12 mos. back
    ABC-123    0130 Z211      .5 12 mos. back
    ABC-123    0170 X928      .0 12 mos. back
    ABC-123    0324 Y000      .1 12 mos. back
    ABC-123    0120 H214      .3 24 mos. back
    ABC-123    0122 T203     2.5 24 mos. back
    ABC-123    0130 Z211      .5 24 mos. back
    ABC-123    0170 X928      .0 24 mos. back
    ABC-123    0324 Y000      .1 24 mos. back
    ABC-123    0324 Y000      .1 37 mos. back +The output is correct; the problem is, can we get the same results without 2 copies of the wctr CASE expression, and 3 copies of the time_period CASE expression?
    Is that a fair description of the problem?
    For starters, you can use column aliases in the ORDER BY clause. Unfortunately, that's the only place where you can use column aliases in the same query where they are defined . You can compute them in a sib-query, and then use them in super-queries.
    In other words, wouldn't it be nice if we had a table just like op_detail, but with an additional column called wctr? Make a view: either a regular view (especially if wctr, computed the same way, will be used in several different queries) or an in-line view, as shown below.
    Wouldn't it be great if there was a table that was just like a, except that it had time_period alreay computed? Make a view: either a regular view or an in-line view, as shown below.
    SELECT     o.part_nbr
    ,     s.major_seq_nbr          AS op_nbr
    ,     s.wctr
    ,     MIN(s.plan_su_rsrc)          AS min_plan_setup
         -- lots of other agtgregates go here in real query
    ,     a2.time_period
    FROM     ord_master      o
    ,     (          -- Begin in-line view s, with data from op_detail
                 SELECT  op_detail.*      -- or list all columns needed in main query
              ,     CASE          -- replace similar-to wctr_id's with a single new wctr_id, so we can treat them as the same
                       WHEN     wctr_id        IN ('H211','H212')
                       THEN     'Z211'
                       ELSE     wctr_id
                   END                    AS wctr
              FROM     op_detail
         ) s          -- End in-line view s, with data from op_detail
    ,     (           -- Begin in-line view a2, to compute time_period
              SELECT  a.*
              ,     CASE
                       WHEN ord_min_start     >     ADD_MONTHS(SYSDATE,-12)
                           THEN     '12 mos. back'
                           WHEN ord_min_start     >     ADD_MONTHS(SYSDATE,-24)
                           THEN     '24 mos. back'
                           WHEN ord_min_start     >     ADD_MONTHS(SYSDATE,-36)
                           THEN     '36 mos. back'
                           ELSE '37 mos. back +'
                   END                         AS time_period
              FROM     a          -- in real query, a is an in-line view
         ) a2          -- End in-line view a2, to compute time_period
    WHERE     o.ord_nbr     = s.ord_nbr
    AND     o.sub_ord_nbr     = s.sub_ord_nbr
    AND     o.ord_nbr     = a2.ord_nbr
    AND     o.sub_ord_nbr     = a2.sub_ord_nbr
    AND     o.ord_type     = 'AA'
    AND     o.ord_stat     IN ('CL','OP')
    AND     s.oper_stat     IN ('CL','CP')
    GROUP BY     o.part_nbr
    ,          s.major_seq_nbr
    ,          s.wctr
    ,          a2.time_period
    ORDER BY     o.part_nbr
    ,          a2.time_period
    ,          s.major_seq_nbr
    ;In your example, wctr is the same as wctr_id except for two values. If it was more complicated (e.g., if there were not just 2 values that need to be mapped to 'Z211', but also 3 values to were equivalent to 'Z987', and 1 that was to be treated like 'A012', and 5 that should appear as 'A666', and ...), then you could code all that in a humongeous CASE expression (a nested CASE expression, if it involves more that 128 branches), but it really belongs in a table, where you have the raw wctr_id (like 'H211') in one column, and its corresponding equivalent (such as 'Z211') in another. I know you said you can't create new tables; I'm just pointing this out so you can tell the people who won't let you create new tables that it's a bad idea, likely to cause errors and certain to waste time in the future.

  • Best way to replace source footage

    I have about an hour of continuous source footage that I used to create a complex 15min edited version in Final Cut Pro X v10.0.5.  After this project was already completed, I received a better quality version of the original 1 hour of source footage.
    What would be the "best Final Cut Pro X way" to replace the original source footage with the higher quality new footage, without having to redo my complex edit?
    Unfortunately, my new footage is slightly different frame rate, dimensions, and quality than the original, and also not exactly in sync.
    I imagine this is the type of thing that professional editors must contend with all the time, but I'm not finding an efficient way to do this in Final Cut Pro X.
    I've unsuccessfully explored three options:
    1.) using the (new since v10.0.3) Relink feature
    This is the workflow that seems most similar to those on other editors, however in Final Cut Pro X is seems this only works if the new media file is nearly identical to the old one.  It explicitly states that it doesn't work with footage of different frame rates.  And I also didn't see any way to sync to the old footage, if the new is slightly different length.
    2.) importing as a new clip and syncing in the Event Browser
    I see that I can sync two different clips in the Event Browser to create a compound clip, but how does this help me easily replace my already edited footage (which was not the new compound clip) with the new?
    3.) using the (new since v10.0.3) Multicam editing
    I know I can import the new source footage and sync to the old using Multicam editing, but again, how does this help me replace what was already edited from a non-multicam clip?
    Suggestions?
    Many thanks for any tips.

    We also had a long debate on the same issue.
    We decided to try the Soft-Code values instead of the Hard Code.
    1. Create some custom tables which can hold the constant values. Like: We have some special processing for the normal sales Order ZOR1 and different logic for the Returns order ZRE1.
    So, we have created
    One table for the Group - NORM, RETN
    One table for the Sales Order & Group relation.
    NORM - ZOR1
    NORM - ZOR2...
    RETN - ZRE1
    RETN - ZRE2
    Create a View Cluster to maintain these tables easily.
    2. Create a Classes which can fatch this data
    Like: VALID_SALES_ORDER_TYPE
    Definition-
    Importing :
      Sales Order type
      Group
    Exporting
      Valid
    Implementation-
      Get the value from the table Sales Order & group relation
    This class contains some other methods also, like VALID_GROUPS_4_SO, VALID_SO_4_GROUP etc.
    Advantage: You can easily maitain a new Hardcoded value in the SM30
    Disadvantage: Lots of coding
    Another Approch:
    You can create one Global class for Constants. You can maintain all your constants in that global class and use them in your coding. One main advantage would be, you can easily do the where used list on each individual constant.
    Regards,
    Naimesh Patel

  • Best way to replace Hard Drive?

    Hi,
    I am ready to replace my hard drive and get a Solid State Drive.
    What is the best way to transfer the contents from the old hard drive to the new?
    Except from Time Machine (I guess you can do this with time machine... not sure), does Leopard offers any other utility?
    Thanks

    xsi wrote:
    Hi,
    I am ready to replace my hard drive and get a Solid State Drive.
    What is the best way to transfer the contents from the old hard drive to the new?
    Except from Time Machine (I guess you can do this with time machine... not sure), does Leopard offers any other utility?
    Thanks
    There are at least two free utilities for cloning your HD.
    CCC and SuperDuper!
    Make a bootable clone of your HD and test it.
    Then swap your HDs and reclone the new HD from the clone.
    It's that simple, and relatively fast and, unlike TM, you can test the clone beforehand.
    CCC
    http://www.bombich.com/software/ccc.html
    SuperDuper!
    http://www.shirt-pocket.com/SuperDuper/SuperDuperDescription.html

  • [MBP - 2008, 4,1] Best way to replace HDD with SSD

    Looking to upgrade my 2008 Macbook pro with a new SDD.
    What is the best way to install a SDD while still saving the data from my HDD?  I've heard it's possible to clone the hard drive, place the info on the SDD, and then boot with it.  I've tried my best googling it, but I can't seem to figure out how I would connect my SSD to my computer while the HDD is still installed?  I don't have an external drive with SATA connections. 
    If I do have to do a clean boot with the SDD (After saving important documents on an external drive), would I need my OSX disks?  It's been a long 4 years with this computer and don't think there is any chance of recovering the OSX boot disks.  Is there a way to download these necessary to do a clean boot?
    Thanks for helping a misguided student trying to speed up his laptop!

    You have two basic options. First is simply replace the HDD with the SSD. Second is to remove the optical drive, move the HDD to the space where the optical drive was (you need a mounting kit for this) and install the SSD where the HDD was installed.
    Visit OWC to see the various options they have that includes the special mounting kit, SSD, and installation tutorials.
    If you go with the first option then you will need an external notebook drive enclosure in which to put the HDD when you replace it with the SSD.
    As for cloning that is done as follows:
    Clone using Restore Option of Disk Utility
    Open Disk Utility from the Utilities folder.
    Select the destination volume from the left side list.
    Click on the Restore tab in the DU main window.
    Check the box labeled Erase destination.
    Select the destination volume from the left side list and drag it to the Destination entry field.
    Select the source volume from the left side list and drag it to the Source entry field.
    Double-check you got it right, then click on the Restore button.
    Destination means the external backup drive. Source means the internal startup drive.
    Be sure you prep the SSD properly:
    Drive Preparation
    1.  Boot from your old HDD. Open Disk Utility in your Utilities folder.
    2. After DU loads select your SSD (this is the entry with the mfgr.'s ID and size) from the left side list. Note the SMART status of the drive in DU's status area.  If it does not say "Verified" then the drive is failing or has failed and will need replacing.  SMART info will not be reported  on external drives. Otherwise, click on the Partition tab in the DU main window.
    3. Under the Volume Scheme heading set the number of partitions from the drop down menu to one. Set the format type to Mac OS Extended (Journaled.) Click on the Options button, set the partition scheme to GUID then click on the OK button. Click on the Partition button and wait until the process has completed.
    4. Select the volume you just created (this is the sub-entry under the drive entry) from the left side list. Click on the Erase tab in the DU main window.
    5. Set the format type to Mac OS Extended (Journaled.) Click on the Security button, check the button for Zero Data and click on OK to return to the Erase window.
    6. Click on the Erase button. The format process can take up to several hours depending upon the drive size.
    I would also recommend upgrading your OS to Snow Leopard. You will need at least 1 GB of installed RAM for Snow Leopard.

  • What is the best way to replace a cracked screen for the MacBook Pro?

    My MacBook Pro was accidentally droped and the screen was cracked.  Need to find out what is the most effecient way to replace the screen?

    Contact your nearest Authorized Apple Service Provider and ask them about the costs.
    MacBook Pro - Contact Support - Apple Support

Maybe you are looking for

  • Disk Utility Reporting errors

    Hi all, i have a question which i don't understand. I have just got a new macbook for a few days and was repairing my disk permission and i have received the following errors; 2009-01-09 01:25:37 +0800: Disk Utility started. 2009-01-09 01:25:47 +0800

  • Apple tv more than one?

    Hi can I run more than one apple tv 2 on one wireless net work, what I would like to do is install a tv in another room to use as a monitor and just use apple tv to watch films and music through the tv. This will also cut down on running cables  only

  • What does it mean when it says 'firmware file not compatible?' after downloading itunes?

    AS ABOVE

  • Parsing XML Files to ABAP

    Hello All, There is a requirement for parsing of XML files to ABAP. 1.How do we pick an XML file from Application server and also from FTP server? 2.After picking the XML file how to parse that XML file to process it to create material master?

  • Keyword Search in LR2

    Just started using LR2. In LR 1.4, keyword searches are on the left, just like the metadata, and all the other searches in the library. It worked fine, and was similar to the way I have Bridge configured. In LR2, it appears keywords have been moved t