Help with select/update?

Basically I want to have table to behave like the "netflix" movie queue priority where a user can update a row ( or any number of rows) in the queue to be any priority and the queue sorts out the new order of the queue.
Can this be done with a select?
Say I have a table with 3 columns Such as:
prio     new_prio     name
1     1          First record
2     2          Second record
3     3          Third Record
4     4          Forth Record
5     5          Fifth Record
6     6          Sixth RecordWhat I want to happen is that the prio, to always be sequence, starting at 1, incrementing for each record for the whole table.
So if I took the same table and updated the new_prio as follows:
prio     new_prio     name
1     1          First record
2     2          Second record
3     2          Third Record  <- updated this record  new_prio = 2
4     4          Forth Record
5     3          Fifth Record  <- updated this record  new_prio = 3
6     6          Sixth RecordI would want to update the prio column to follow the updates from the new_prio column So the results would look like (sorted on prio):
prio     new_prio     name
1     1          First record
2     2          Third Record
3     3          Fifth Record
4     4          Second record
5     5          Forth Record
6     6          Sixth RecordNow say I delete the two records like:
prio     new_prio     name
1     1          First record
2     2          Third Record  <- delete this one
3     3          Fifth Record  <- and this one
4     4          Second record
5     5          Forth Record
6     6          Sixth RecordI would expect the following:
prio     new_prio     name
1     1          First record
2     2          Second record
3     3          Forth Record
4     4          Sixth RecordIs there a way to get this done in a simple select or update? what about a simple cursor loop?
I know I could do this with a lot of pl/sql code, But I am very interested if this could be done in sql. I have come close with using a cursor loop with inline views using rownum, but I am hitting problems with moving more then 2 rows around. when updating multiple rows, some rows come out one or two rows out of their intended order/prio.
Thanks in advance.
--pat                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

SQL> create table netflix
  2  as
  3  select 1 o, 1 n, 'ONE' t from dual union all
  4  select 2, 2, 'TWO' from dual union all
  5  select 3, 9, 'THREE' from dual union all
  6  select 4, 10, 'FOUR' from dual union all
  7  select 5, 5, 'FIVE' from dual union all
  8  select 6, 6, 'SIX' from dual union all
  9  select 7, 7, 'SEVEN' from dual union all
10  select 8, 1, 'EIGHT' from dual union all
11  select 9, 2, 'NINE' from dual union all
12  select 10, 3, 'TEN' from dual union all
13  select 11, 11, 'ELEVEN' from dual
14  /
Tabel is aangemaakt.
SQL> SELECT o, n, t
  2    from netflix
  3  /
         O          N T
         1          1 ONE
         2          2 TWO
         3          9 THREE
         4         10 FOUR
         5          5 FIVE
         6          6 SIX
         7          7 SEVEN
         8          1 EIGHT
         9          2 NINE
        10          3 TEN
        11         11 ELEVEN
11 rijen zijn geselecteerd.
SQL> select i, t
  2    from dual
  3   model
  4         reference changed_numbers on
  5           ( select n, t
  6               from netflix
  7              where o <> n
  8           )
  9           dimension by (n)
10           measures (t)
11         reference unchanged_numbers on
12           ( select row_number() over (order by n) n
13                  , t
14               from netflix
15              where o = n
16           )
17           dimension by (n)
18           measures (t)
19         main m
20         dimension by (1 i)
21         measures (cast(null as varchar2(10)) t, 1 last_n)
22         rules iterate (1000)
23               until (   unchanged_numbers.t[last_n[1]] is null
24                     and changed_numbers.t[iteration_number+1] is null
25                     )
26         ( t[iteration_number+1]
27           = nvl
28             ( changed_numbers.t[iteration_number+1]
29             , unchanged_numbers.t[last_n[1]]
30             )
31         , last_n[1] = last_n[1] + nvl2(changed_numbers.t[iteration_number+1],0,1)
32         )
33  /
         I T
         1 EIGHT
         2 NINE
         3 TEN
         4 ONE
         5 TWO
         6 FIVE
         7 SIX
         8 SEVEN
         9 THREE
        10 FOUR
        11 ELEVEN
11 rijen zijn geselecteerd.Regards,
Rob.

Similar Messages

  • Help with this update statement..

    Hi everyone,
    I am trying to update a column in a table .I need to update that column
    with a function that takes patient_nbr and type_x column values as a parameter.
    That table has almost "300,000" records. It is taking long time to complete
    almost 60 min to 90 min.
    Is it usual to take that much time to update that many records?
    I dont know why it is taking this much time.Please help with this update statement.
    select get_partner_id(SUBSTR(patient_nbr,1,9),type_x) partner_id from test_load;
    (it is just taking 20 - 30 sec)
    I am sure that it is not the problem with my function.
    I tried the following update and merge statements .Please correct me if i am wrong
    in the syntax and give me some suggestions how can i make the update statement fast.
    update test_load set partner_id = get_partner_id(SUBSTR(patient_nbr,1,9),type_x);
    merge into test_load a
    using (select patient_nbr,type_x from test_load) b
    on (a.patient_nbr = b.patient_nbr)
    when matched
    then
    update
    set a.partner_id = get_partner_id(SUBSTR(b.patient_nbr,1,9),b.type_x);
    there is a index on patient_nbr column
    and the statistics are gathered on this table.

    Hi Justin,
    As requested here are the explain plans for my update statements.Please correct if i am doing anything wrong.
    update test_load set partner_id = get_partner_id(SUBSTR(patient_nbr,1,9),type_x);
    "PLAN_TABLE_OUTPUT"
    "Plan hash value: 3793814442"
    "| Id  | Operation          | Name             | Rows  | Bytes | Cost (%CPU)| Time     |"
    "|   0 | UPDATE STATEMENT   |                  |   274K|  4552K|  1488   (1)| 00:00:18 |"
    "|   1 |  UPDATE            |        TEST_LOAD |       |       |            |          |"
    "|   2 |   TABLE ACCESS FULL|        TEST_LOAD |   274K|  4552K|  1488   (1)| 00:00:18 |"
    merge into test_load a
    using (select patient_nbr,type_x from test_load) b
    on (a.patient_nbr = b.patient_nbr)
    when matched
    then
    update
    set a.partner_id = get_partner_id(SUBSTR(b.patient_nbr,1,9),b.type_x);
    "PLAN_TABLE_OUTPUT"
    "Plan hash value: 1188928691"
    "| Id  | Operation            | Name             | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |"
    "|   0 | MERGE STATEMENT      |                  |   274K|  3213K|       |  6660   (1)| 00:01:20 |"
    "|   1 |  MERGE               |        TEST_LOAD |       |       |       |            |          |"
    "|   2 |   VIEW               |                  |       |       |       |            |          |"
    "|*  3 |    HASH JOIN         |                  |   274K|    43M|  7232K|  6660   (1)| 00:01:20 |"
    "|   4 |     TABLE ACCESS FULL|        TEST_LOAD |   274K|  4017K|       |  1482   (1)| 00:00:18 |"
    "|   5 |     TABLE ACCESS FULL|        TEST_LOAD |   274K|    40M|       |  1496   (2)| 00:00:18 |"
    "Predicate Information (identified by operation id):"
    "   3 - access("A"."patient_nbr"="patient_nbr")"Please give some suggestions..
    what's the best approach for doing the updates for huge tables?
    Thanks

  • Can anyone help with problem updating iphone5s cant get anything only apple on screen sometimes screen flashes blue

    can anyone help with problem updating iphone5s cant get anything only apple on screen sometimes screen flashes blue

    Hey damien555,
    Thanks for the question, I understand how frustrating this may be. It sounds like the update process may have been interrupted, and to resolve the issue, we’ll need to restore your device in recovery mode with iTunes:
    If you can't update or restore your iOS device
    http://support.apple.com/kb/HT1808
    Thanks,
    Matt M.

  • Help with SELECT - selecting range of numbers

    Hi,
    I need a help with SELECT statement. I want to select Dates starting from today and ending 30 days back. So the result would be like:
    TRUNC(SYSDATE)
    TRUNC(SYSDATE) - 1
    TRUNC(SYSDATE) - 2
    TRUNC(SYSDATE) - 3
    TRUNC(SYSDATE) - 30I was thinking to simply select truncated SYSDATE in first column, and in second column numbers 0, 1, 2, ... 30. Then I would simply do a difference first column - second column. But how to select such sequence of numbers? I don't want to select each number (date) in separate select statement and then unioning them.
    Does anybody have an idea?
    Thanks for help, Dan

    SQL> select trunc(sysdate) - level + 1 as dt
      2  from dual
      3  connect by level <= 31
      4  ;
    DT
    07/01/2013
    06/01/2013
    05/01/2013
    04/01/2013
    03/01/2013
    02/01/2013
    01/01/2013
    31/12/2012
    30/12/2012
    29/12/2012
    28/12/2012
    27/12/2012
    26/12/2012
    25/12/2012
    24/12/2012
    23/12/2012
    22/12/2012
    21/12/2012
    20/12/2012
    19/12/2012
    DT
    18/12/2012
    17/12/2012
    16/12/2012
    15/12/2012
    14/12/2012
    13/12/2012
    12/12/2012
    11/12/2012
    10/12/2012
    09/12/2012
    08/12/2012
    31 rows selected

  • Help with a update,select statement

    Hi all please can you help me with a update statement i am struggling with.
    I have 2 tables
    Holiday and data
    In the Holiday table i have columns for
    Machine_ID NUMBER,
    date_from DATE,
    date_to DATE,
    ID NUMBER
    Machine column represents a type of machine, the two dates represent the start and end date of a holiday and ID represents the ID of the machines that the holiday effects (as you can have many machines that are the same, so the ID unique field to seperate them.
    i.e.
    996     25-DEC-08 00:00:00     27-DEC-08 00:00:00     91     
    996     25-DEC-08 00:00:00     27-DEC-08 00:00:00     92     
    100     28-DEC-08 00:00:00     29-DEC-08 00:00:00     1
    100     28-DEC-08 00:00:00     29-DEC-08 00:00:00     2
    In the data table i have the following columns:
    DATE DATE
    Machine NUMBER
    SHIFT1S DATE
    SHIFT1F DATE
    SHIFT2S DATE
    SHIFT2F DATE
    CALS DATE
    CALF DATE
    CAP NUMBER
    CALCAP NUMBER
    total_hrs_up NUMBER
    In here i have data for every date in the calendar. The machines are cross references with the machine in holidays table.
    I run two shifts so have shift 1 start, finish. shift 2 start, finish. These are dates with times, so shift1s could be 01-01-08 09:00:00 shift1f could be 01-01-08 17:00:00.
    shift2S could be 01-01-08 21:00:00 shift2f could be 01-01-08 23:59:00.
    so that machine would be up between them hours of the day.
    Other columns include
    CALS, ,CALF = calendar start, finish, - This needs to be populated from the holiday table. currently null. So if the date is the 26 DEC and the machine is the same as what is in the holiday table then these two columns should be populated with them data
    CAP is the total number of these machines i have available.
    CALCAP is the no of machines the holiday affects -currently null
    total_hrs_up is the number of hours this machine is up and running -currently null.
    So what i need to do is populate the cals, calf calcap, total_hrs_up columns.
    total_hrs_up is the important one, this needs to work out based on the two shift patterns the number of hours that the machine is available and then take off the holiday hours to give a final value.
    so current data example in data is
    date machine shifts shiftf shift2s shift2f cals, calf, cap, calcap, total_hrs
    16-JUL-08     100 09:00:00     17:00:00     12:00:00     00:00:00               '','','',1     ,''     
    16-JUL-08     105 09:00:00     17:00:00     12:00:00     00:00:00               '','','',1     ,''
    16-JUL-08     107 09:00:00     17:00:00     12:00:00     00:00:00               '','','',1     ,''
    id like to see based on the holiday table if there is a holiday then this data is updated as such and a total_hrs machine is available populated on that date.
    Any help is very much appreciated!
    Thanks

    Hi,
    The following query does what you requested.
    It makes the following assumptions:
    (a) in data, shift1start <= shift1finish
    (b) in holiday, hol_start <= hol_finish
    (b) in data, the combination (machine, shift1start) is unique
    (c) in holiday, hol_start <= hol_finish
    (d) in holiday, rows for the same machine and id never have overlapping dates (including times). For example:
    INSERT INTO holiday (machine, id, date_from, date_to)
    VALUES (200, 1, '26-DEC-08 07:00:00', '26-DEC-08 09:59:59');
    INSERT INTO holiday (machine, id, date_from, date_to)
    VALUES (200, 1, '26-DEC-08 09:00:00', '26-DEC-08 09:59:59');will cause a probem. Multiple rows for the same machine and day are okay, however, if the times do not overlap, like the following:
    INSERT INTO holiday (machine, id, date_from, date_to)
    VALUES (200, 1, '26-DEC-08 07:00:00', '26-DEC-08 08:59:59');
    INSERT INTO holiday (machine, id, date_from, date_to)
    VALUES (200, 1, '26-DEC-08 09:00:00', '26-DEC-08 09:59:59');Here's the UPDATE statement:
    UPDATE     data     m
    SET     (     hol_start
         ,     hol_finish
         ,     no_of_available_minutes
         ) =
    (     SELECT     MIN (date_from)
         ,     MAX (date_to)
         ,     (     MAX (shift1finish - shift1start)     -- Total from data
              -     ( NVL     ( SUM     ( LEAST (date_to, shift1finish)
                             - GREATEST (date_from, shift1start)
                        , 0
                        )                    -- Total from holiday
                   / MAX (total_no_of_machines)          -- Average
              ) * 24 * 60                         -- Convert days to minutes
         FROM          data     d
         LEFT OUTER JOIN     holiday     h     ON     h.machine     = d.machine
                             AND NOT     (     date_from     > shift1finish
                                  OR      date_to          < shift1start
         WHERE          d.machine     = m.machine
         AND          d.shift1start     = m.shift1start
    );The subquery has to use its own copy of data (that is, in needs d, not m), since the subquery has to return a non-NULL number of minutes when no rows in h match m.

  • Help with a update query from a subquery

    Hello All,
    I wanted to see if someone can help me with an update query.
    I need to grab a latitude & longitude from a the same user that is in two accounts. therefore i am trying to update lat/long in a users table for one account based off of the same user in another account. I am matching the users up by phone number and last name. I tried a subquery but am having difficulty.
    I was thinking of something like the following:
    update users
    set lat = getlat, long = getlong
    inner join (select lat as getlat, long as get long from users where account_id = '1')
    on phone = phone and last name = lastname
    where account_id = '2' and lat IS NULL and long IS NULL
    Am I going in the right direction???
    Thanks in advance for any assistance!!!!

    What difficulty are you having? Have you tried what you posted and get an error?
    Although someone may be able to give you sql advice here, I would try posting this over at Stack Overflow as its not really related to Coldfusion.

  • Help with replicating/updating vendor master data

    Hi,
    Currently, we run the bbp_vendor_sync program to do the replication. It does the job of both bbpgetvd (new vendor creation) and bbpupdvd (update existing vendor).
    But the problem is, we have two number ranges for vendors. One is Numeric and other one is Alpha.
    Group -->AB     From 0010000000     to 0699999999
    Group -->AZ     From A     to ZZZZZZZZZZ
    The vendor synchronization program can consider only one number range at a time i.e.
    either Numeric or Alpha. So, we have to switch the active number range
    and run the program twice., first for numeric and then for alpha.
    In order to avoid this, I'm looking at implementing bbp_transdata_prep which I was told would take care of this issue.
    I looked around for documentation/sample code for bbp_transdata badi and couldnt find any on SAP help site or SDN.
    Wondering if someone can help with the documentation/sample code and difficuly level of implementing this BADI.
    Any help would be highly appreciated and suitable points would be awarded for your help.
    Also, if there is another way to solve this issue without implementing transdata badi, pls. let me know.
    TIA,
    Seyed

    Hi
    <u>Please go through this -></u>
    http://help.sap.com/saphelp_srm50/helpdata/en/56/54f137a5e6740ae10000009b38f8cf/frameset.htm
    http://help.sap.com/saphelp_srm50/helpdata/en/62/fb7d3cb7f58910e10000000a114084/frameset.htm
    http://help.sap.com/saphelp_srm50/helpdata/en/42/d3b671ba67136fe10000000a1553f7/frameset.htm
    http://help.sap.com/saphelp_srm50/helpdata/en/bb/6c0e3b02616a42e10000000a11402f/frameset.htm
    <b><u>Sample BADI Implementation
    BADI Definition - BBP_TRANSDATA_PREP
    Purpose -> Impl. for BBP_TRANSDATA_PREP, Delete Invalid Mail Addresses</u></b>
    <u>PREPARE_REPLICATION_DATA method -></u>
    method IF_EX_BBP_TRANSDATA_PREP~PREPARE_REPLICATION_DATA.
      FIELD-SYMBOLS: <LFS_ADR6> TYPE ADR6.
      LOOP AT CT_ADR6 ASSIGNING <LFS_ADR6>.
        IF <LFS_ADR6>-SMTP_ADDR NS '@'.
          DELETE CT_ADR6.
        ENDIF.
      ENDLOOP.
    endmethod.
    <u>PREPARE_UPDATE_DATA method -></u>
    method IF_EX_BBP_TRANSDATA_PREP~PREPARE_UPDATE_DATA.
      FIELD-SYMBOLS: <LFS_ADR6> TYPE ADR6.
      LOOP AT CT_ADR6 ASSIGNING <LFS_ADR6>.
        IF <LFS_ADR6>-SMTP_ADDR NS '@'.
          DELETE CT_ADR6.
        ENDIF.
      ENDLOOP.
    endmethod.
    Hope this will help.
    Regards
    - Atul

  • Help with selecting chuncks of data from a table

    Hi all,
    I need help with a query that should do the following.
    I have a table with vessel messages, and I need to get the last "NumMsgs" messages from a group of vessels.
    The problem I have is that if I order the table by Vessel_ID, MessageDate DESC, I can´t do ROWNUM < NumMsgs (<-- Then number of messages to be shown is a user parameter)
    I know it should be something like:
    select * from (
    select *
    from Messages m
    where TRIM(m.V_ID) = '11597' /* I was trying for a single vessel atm */
    order by m.V_ID, m.MESSAGEDATE desc
    where rownum < :NumMsgs
    Any ideas?
    Thanks in advance !

    Hi,
    What about :
    select *
    from (
    select m.*, row_number() (order by m.V_ID, m.MESSAGEDATE desc) rn
    from Messages m
    where TRIM(m.V_ID) = '11597' /* I was trying for a single vessel atm */
    where rn < :NumMsgsAnyway, I don't very well understand your problem, your query work fine, see for example :
    SQL> ed
    Wrote file afiedt.buf
      1  select object_name, object_id
      2  from
      3  (select object_name, object_id, row_number() over (order by object_id desc) as rn
      4   from dba_objects)
      5* where rn < 4
    SQL> /
    PS_TL_MTCHD_118     71763
    PS_TL_MTCHD_117     71762
    PS_TL_MTCHD_116     71761
    SQL> ed
    Wrote file afiedt.buf
      1  select object_name, object_id
      2  from
      3  (select object_name, object_id
      4   from dba_objects
      5   order by object_id desc)
      6* where rownum < 4
    SQL> /
    PS_TL_MTCHD_118     71763
    PS_TL_MTCHD_117     71762
    PS_TL_MTCHD_116     71761
    SQL> Nicolas.
    Message was edited by:
    N. Gasparotto

  • Help with CS5 Updates Failed, Updates could not be applied, Error Code U43M1D207

    CS5 Updates Failed, Updates could not be applied, Error Code U43M1D207
    Can anyone help with this error code?
    Products installed and activated on new laptop
    Unable to update using Adobe Application Manager
    Thank you

    I followed up on the Photoshop Error code and found some suggestions by Jeff Tranberry and Pete Green here.
    Michael

  • Need help with understanding updates, partitions, firmware etc.

    I went to update my QuickTime and in doing so was told to update my OS which included QT updates. Now I'm getting all kinds of messages about partitions, firmware etc. do not understand at all what's going on.

    THIS IS MY STEP BY STEP situation with my updates:
    I go to the Apple Icon and selected Software Update and it reads I have 2 items:
    MacBook EFI Firmware Update 1.2
    MacBook SMC Firmware Update 1.4
    I select Install and then it state Installs completed successfully.
    BUT THEN I recieve and new icon and this message below: 
    To update the SMC firmware on your MacBook:
    Your computer's power cord must be connected and plugged into a working power source, or your battery must be at least 25% charged.
    For more information see 'http://support.apple.com/kb/TS3499'.
    1. Quit all other open applications.
    2. Click Restart in the MacBook SMC Firmware Update window and wait for your computer to restart.
    The SMC firmware update starts automatically. A status bar indicates the progress of the update. During the update your computer fans will run at full speed, but will return to normal once the update completes.
    Important: Do not interrupt the update.
    Your computer restarts automatically when the update is completed and opens the MacBook SMC Firmware Update.
    3.  Click OK. The SMC firmware is now up-to-date.
    If these instructions appear on your screen again, the SMC firmware update was not successful. Repeat steps 2 and 3.
    I follow the instructions and then I get this: (could get my image to attach but here's what it said)
    the first error message heading of:
    MacBook SMC Firmware Update 1.4
    Your firmware could not be updated, the hard drive partition scheme may not be supported.  You must be booted from a GUID partition or RAID scheme.
    see http://support.apple.com/kb/HT2434 for more information (internal error 28:3)
    THEN ANOTHER ONE POPS UP saying:
    Your Hard Drive partition scheme is not supported, you must be booted from a GUID partition scheme.
    see http://docs.info.apple.com/article.html? artnum=303609 for more information
    I went to those URL and tried to understand what it was telling me but I did not understand.  I can't figure, by reading thru forums, etc, if I need to do this or not and what exactly it is.
    So back to just pushing a simplet update has thrown all this unknown info. my way and I have no clue what to do.
    Thank you. Hope this is more clear.

  • Help with iPad update issue

    Need help with update issue please

    Please see your duplicate thread below for answer already provided.
    https://discussions.apple.com/message/25940896#25940896

  • Need help with select that month range with flexible first date

    Hello everyone,
    I am trying to create a selection of month range (will be in a WITH clause) for a report to display monthly data. But the first month start date can be any date. (Not necessarily the first date of the month)
    Examples:
    Report input parameters:
    Start Date: 08/10/12
    End Month: Dec 2012
    I was trying to build a with select that will list
    Month_Start, Month_End
    08/10/12, 31/10/12
    01/11/12, 30/11/12
    01/12/12, 31/12/12
    OR
    Month_Start, Next_Month
    08/10/12, 01/11/12
    01/11/12, 01/12/12
    01/12/12, 01/01/13
    End month is optional, so if no value the select will list only
    08/10/12, 01/11/12
    Oracle Database Details is
    Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
    PL/SQL Release 11.1.0.7.0 - Production
    My code so far is
    VARIABLE  P50_START_DATE  VARCHAR2 (10)
    VARIABLE  P50_END_MONTH    VARCHAR2 (10)
    EXEC  :P50_START_DATE  := '10/10/2012';
    EXEC  :P50_END_MONTH   := '31/12/2012';
      SELECT  to_char(:P50_START_DATE) AS start_date
            ,  ADD_MONTHS( TRUNC(to_date(:P50_START_DATE,'DD/MM/YYYY'),'MONTH'), 1) AS next_month
      FROM dual
      union
       SELECT to_char(ADD_MONTHS( TRUNC(to_date(:P50_START_DATE,'DD/MM/YYYY'),'MONTH'), ROWNUM-1)) AS start_date
       ,      ADD_MONTHS( TRUNC(to_date(:P50_START_DATE,'DD/MM/YYYY'),'MONTH'), ROWNUM) AS next_month
       --, rownum
       from all_objects
       where
       rownum <= months_between(to_date(NVL(:P50_END_MONTH, :P50_START_DATE),'DD/MM/YYYY'), add_months(to_date(:P50_START_DATE,'DD/MM/YYYY'), -1))
       and rownum > 1If I put comment – on line and rownum > 1, as
    -- and rownum > 1The result I get is
    START_DATE                     NEXT_MONTH               
    01/10/12                       01/10/12                 
    01/11/12                       01/11/12                 
    01/12/12                       01/01/13                 
    10/10/2012                     01/11/12    But when I try to remove the duplicate period (of the first month) out by restrict rownum, it do not return any rows for the second select at all. The result I get is:
    START_DATE                     NEXT_MONTH               
    10/10/2012                     01/11/12    Can anyone advise what wrong with the select statement ?
    Thanks a lot in advance,
    Ann

    Hi,
    Here's one way:
    WITH   params      AS
         SELECT     TO_DATE (:p50_start_date, 'DD/MM/YYYY')     AS start_date
         ,     TO_DATE (:p50_end_month,  'DD/MM/YYYY')     AS end_date
         FROM     dual
    SELECT     GREATEST ( start_date
               , ADD_MONTHS ( TRUNC (start_date, 'MONTH')
                            , LEVEL - 1
              )               AS month_start
    ,     LEAST     ( end_date
              , ADD_MONTHS ( TRUNC (start_date, 'MONTH')
                          , LEVEL
                        ) - 1
              )               AS month_end
    FROM    params
    CONNECT BY     LEVEL     <= 1 + MONTHS_BETWEEN ( end_date
                                      , TRUNC (start_date, 'MONTH')
    ;:p50_end_month doesn't have to be the last day of the month; any day will work.
    If you want to generate a Counter Table containing the integers 1 througn x in SQL, you could say
    SELECT  ROWNUM  AS n
    FROM    all_objects
    WHERE   ROWNUM  <= x
    ;but, starting in Oracle 9.1, it's much faster to say
    SELECT  LEVEL   AS n
    FROM    dual    -- or any table containing exactly 1 row
    CONNECT BY  LEVEL <= x
    ;Also, x can be greater than the number of rows in all_objects.

  • I need help with application updates

    My problem  is with applications updateing i changed my e-mail address but my old one still is listed  and i can't update  new applications how can i change that ID

    no iam refering to the application icon shows six updates and  i  touch it and it shows my old e-mail address which is [email protected]

  • Help with live updating and downgrade

    Since upgrading to the latest firmware I lost the ability for my smart playlists to be updated on the fly as before. I want to restore my original firmware if possible since I don't see anything new or better with the newest firmware. Is it possible, and if so how. I see the restore function for the firmware updater but I wasn't sure if that restores the firmware too or just removes files only. TIA

    you will need to restore and then update with the updater for the version you want.
    Rememeber that doing a restore will erase everything on your iPod

  • Help with "select .... for update ... nowait" message

    Hi,
    How can I get the Oracle 10 g2 server return code issued when a cursor attemps to select ... for update nowait
    and modify the control in the pl/sql block accordingly if one row is already involved in a transaction?
    Many thanks
    Edited by: JeanParis on Feb 9, 2009 2:57 AM
    Hi again
    i have done a search and I found ( dated 2004 ):
    it will raise an exception 54. you have to catch it.
    So that means I have to manage the cursor inside an inner block et loop until the lock is released?
    Edited by: JeanParis on Feb 9, 2009 3:02 AM
    Edited by: JeanParis on Feb 9, 2009 3:03 AM

    The thing to be wary of is locking the session for ages. The cliched version of this problem is if the other user has gone to lunch without committing. Do we really want to tie up our user for an uunlimited amount of time?
    So it's a good idea to embed the SLEEP() within a finite loop FOR in in 1..10 (or 5 or whatever) and then fail if we still can't get the lock. That at least allows our user to make a decision on whether to try again or do something else more interesting.
    It becomes even important when the program is an autonomic procedure (batch job, daemon) because they are capable of spinning until the databse gets taken down.
    Cheers, APC
    blog: http://radiofreetooting.blogspot.com

Maybe you are looking for

  • Why targetcosts are not displaying in cost analysis

    hi     i have created productcost collector thru kkf6n for a material. for that material i have backflashed and confirmed thru MFBF.then i display the cost analysis of productcostcollector where system is showing only Actual costs not target costs.  

  • Blank sms ?

    So, ive send text message to whatever carrier and they arrive with no content, or sometimes with alfanumeric characters, att has review everything, apple says maybe language programing in device etc, anyone has solved this issue? for me happens in US

  • Safari 6. What happened to the action "Email Link" ?

    Using Mountain Lion. Safari 6. What happened to the action "Email Link" ?

  • Magic Mouse doesn't work as it should

    Hello everybody, after reading tons of docs and forums without finding a solution I tell my problem to you: some days ago I got myself a Magic Mouse. Aiming to use it with my Macbook Air running Lion (all updates installed) I paired it but I only got

  • E72 - can't set up second Email on the same server

    Hi, due to some problems with my E72 I decided to do a hard-reset back to factory settings. Now I am in the process of setting up everything again, but I encountered a problem with my Email. I got two Email accounts on my own (rented) server and I us