On Oct 27, 3:03 pm, Gayathri <gd0...@gmail.com> wrote:
> Thanks Mike,
>
> But these are part of Update statement.
>
> something like this:
>
> Update mbr_id = (Query 1)
> where exists (Query 1)
>
> which sometime would return with no updates
>
> Then I do:
>
> Update mbr_id = (Query 2)
> where exists (Query 2)
>

This might work for you:

declare
  v_start_dt date := to_date('12/01/2009', 'mm/dd/yyyy');
  v_end_dt   date := to_date(NULL, 'mm/dd/yyyy');

begin


update mbr
set mbr_id=(SELECT MIN(b.mbr_id) KEEP(DENSE_RANK FIRST ORDER BY
b.mbr_dt_start)
    FROM mbr b
   WHERE b.status_id IN (13, 14)
     AND b.mbr_b_id = 47115
     AND (b.mbr_dt_start != v_start_dt and NVL(b.mbr_dt_end,
TO_DATE('12/31/9999', 'mm/dd/yyyy')) > v_start_dt and
         NVL(b.mbr_dt_end, TO_DATE('12/31/9999', 'mm/dd/yyyy')) <
NVL(v_end_dt, TO_DATE('12/31/9999', 'mm/dd/yyyy')))
union
  SELECT MAX(b.mbr_id) KEEP(DENSE_RANK FIRST ORDER BY b.mbr_dt_start
desc)
    FROM mbr b
   WHERE b.status_id IN (13, 14)
     AND b.mbr_b_id = 47115
     AND v_end_dt is not null
     and v_end_dt > b.mbr_dt_start)
where exists
  (SELECT MIN(b.mbr_id) KEEP(DENSE_RANK FIRST ORDER BY
b.mbr_dt_start)
    FROM mbr b
   WHERE b.status_id IN (13, 14)
     AND b.mbr_b_id = 47115
     AND (b.mbr_dt_start != v_start_dt and NVL(b.mbr_dt_end,
TO_DATE('12/31/9999', 'mm/dd/yyyy')) > v_start_dt and
         NVL(b.mbr_dt_end, TO_DATE('12/31/9999', 'mm/dd/yyyy')) <
NVL(v_end_dt, TO_DATE('12/31/9999', 'mm/dd/yyyy')))
union all
  SELECT MAX(b.mbr_id) KEEP(DENSE_RANK FIRST ORDER BY b.mbr_dt_start
desc)
    FROM mbr b
   WHERE b.status_id IN (13, 14)
     AND b.mbr_b_id = 47115
     AND v_end_dt is not null
     and v_end_dt > b.mbr_dt_start);

exception
  when others then
    dbms_output.put_line('Error: ' || SQLERRM);
end;
/


David Fitzjarrell

-- 
You received this message because you are subscribed to the Google
Groups "Oracle PL/SQL" group.
To post to this group, send email to Oracle-PLSQL@googlegroups.com
To unsubscribe from this group, send email to
oracle-plsql-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/Oracle-PLSQL?hl=en

Reply via email to