Thanks for all the response. But now.. I am asked to use CUBE analytical function to do this. is this doable?
select case when MAX_ORD = MAX_ACTION_TAKEN then MIN_ACTION_NOT_TAKEN when MAX_ORD <> MAX_ACTION_TAKEN then MAX_ACTION_TAKEN + 1 when MAX_ACTION_TAKEN is null and NOT_TAKEN_ACTION > 0 then MIN_ACTION_NOT_TAKEN end as next_ord from ( select max(ORDER) max_ord, max(case when ACTION_flag = 'Y' then ORDER end) MAX_ACTION_TAKEN, SUM(case when ACTION_flag is null then 1 else 0 end) NOT_TAKEN_ACTION, min(case when ACTION_flag is null then ORDER end) MIN_ACTION_NOT_TAKEN FROM participants order by ORDER); On Fri, Feb 18, 2011 at 6:51 AM, Trail <andrew.tr...@gnb.ca> wrote: > Thought I'd throw in my $.02 > > Created a table test_sql (ord number, flg varchar2(1)); inserted > test records as below. This seems to work (though perhaps I am over > simplifying): > > SELECT CASE WHEN max_flg = 'N' > THEN (select min(ord) > from test_sql > where flg = 'N' > and ord > NVL((select max(ord) > from test_sql > where flg = 'Y'),0) ) > ELSE > (select min(ord) > from test_sql > where flg = 'N') > END selected_ord > FROM (select flg max_flg > from test_sql > where ord = (select max(ord) from test_sql)) > > On Feb 17, 7:43 pm, gayathri Dev <gd0...@gmail.com> wrote: > > sorry Mike.. > > didnt realised the new message.. going thr your response now. > > > > > > > > On Thu, Feb 17, 2011 at 3:41 PM, gayathri Dev <gd0...@gmail.com> wrote: > > > I just realised that the order will be in sequence. that made it > better... > > > this is what i have tried.. but still i am sure.. there can be a better > > > one.. please suggest. > > > > > select > > > case when MAX_ORD = MAX_ACTION_TAKEN then MIN_ACTION_NOT_TAKEN > > > when MAX_ORD <> MAX_ACTION_TAKEN then MAX_ACTION_TAKEN + 1 > > > when MAX_ACTION_TAKEN is null and NOT_TAKEN_ACTION > 0 then > > > MIN_ACTION_NOT_TAKEN end as next_ord > > > from ( > > > select > > > max(ORDER) max_ord, > > > max(case when ACTION_flag = 'Y' then ORDER end) > MAX_ACTION_TAKEN, > > > SUM(case when ACTION_flag is null then 1 else 0 end) > > > NOT_TAKEN_ACTION, > > > min(case when ACTION_flag is null then ORDER end) > > > MIN_ACTION_NOT_TAKEN > > > FROM participants > > > order by ORDER); > > > > > On Thu, Feb 17, 2011 at 2:08 PM, gayathri Dev <gd0...@gmail.com> > wrote: > > > > >> Hi Avinash, > > > > >> it should pick 2 > > > > >> thanks > > > > >> On Thu, Feb 17, 2011 at 1:56 PM, Avinash Naidu <avisna...@gmail.com > >wrote: > > > > >>> order action_flag > > >>> 2 N > > >>> 4 Y > > >>> 6 N > > >>> 7 N > > >>> 8 Y > > >>> should pick 2 or 6?? > > > > >>> On Thu, Feb 17, 2011 at 1:31 PM, gayathri Dev <gd0...@gmail.com > >wrote: > > > > >>>> Hi all, > > > > >>>> I am seriously thinking I need a good teacher who can teach me > > >>>> analytical functions. > > >>>> But with a min time i have got to resolve the hurdle I have. > > >>>> Below are the examples.. > > >>>> basically I shld check the last order's action flag if it is Y, then > I > > >>>> shld pick the min order whose action_flag is N > > >>>> else if the last order's action flag is N, then I shld pick the > greatest > > >>>> order who has taken action(action_flag = 'Y') > > >>>> and choose the next order after him. > > > > >>>> order action_flag > > >>>> 2 Y > > >>>> 4 N > > >>>> 6 N > > >>>> 7 N > > >>>> 8 Y > > >>>> should pick 4 > > > > >>>> order action_flag > > >>>> 2 Y > > >>>> 4 N > > >>>> 6 Y > > >>>> 7 N > > >>>> 8 N > > >>>> should select 7 > > > > >>>> order action_flag > > >>>> 2 N > > >>>> 4 N > > >>>> 6 N > > >>>> 7 N > > >>>> 8 N > > >>>> should select 2 > > > > >>>> order action_flag > > >>>> 2 N > > >>>> 4 Y > > >>>> 6 N > > >>>> 7 N > > >>>> 8 N > > >>>> 12 Y > > >>>> 14 N > > >>>> 15 N > > >>>> should select 14 > > > > >>>> Please help me building this query. > > > > >>>> Thanks in advance > > > > >>>> -- > > >>>> 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 > > > > >>> -- > > >>> 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- Hide quoted text - > > > > - Show quoted text - > > -- > 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 > -- 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