Thanks guys. It resolved my problem :)
On Fri, Feb 10, 2012 at 12:12 PM, ddf <orat...@msn.com> wrote: > > > On Feb 10, 10:44 am, Andrej Hopko <ado.ho...@gmail.com> wrote: > > Hi, > > just simple suggestion - what about dividing number by 25 (which is step > > for your ROUND), rounding the decimal to nearest integer (standard ROUND > > function should by sufficient) and then multiplying integer back with 25 > > - the solution on level of two years programming experience at high > > school :D > > > > hope I was of some help > > > > btw. although oracle has ROUND with second paramter - as a grade of > > ROUND, it works only for integer grades of 10 to round: > > > > SELECT ROUND(113.34,-1.5) c1 > > , ROUND(113.34,-LOG(10, 25)) c2 > > , ROUND(113.34,-1.5) c2 > > , ROUND(113.34,-2) c2 > > FROM DUAL > > ; > > > > C1 C2 C2 C2 > > ---------------------- ---------------------- ---------------------- > > ---------------------- > > 110 110 110 100 > > > > I found this interesting news :) > > > > best regards > > hoppo > > > > On 10. 2. 2012 18:13, swaroop gowda wrote: > > > > > > > > > Hi All, > > > I have total amount like 110.01, 113.34, 126.01, 145.54, 155.01 etc > > > but I need to round this 100 or 125 or 150 etc. > > > > > Please find my requirement below, > > > 1) I need to round to 100 if the total is between 100 to 112. > > > 2) I need to round to 125 if the total is between 113 to 125. > > > 3) I need to round to 125 if the total is between 116 to 137. > > > 4) I need to round to 150 if the total is between 138 to 150. > > > 5) I need to round to 150 if the total is between 151 to 167. > > > 5) I need to round to 200 if the total is between 168 to 200. > > > > > You help is greatly appreciated. > > > -- > > > Thanks & Regards > > > Swaroop Thailuru Swamy > > > Ph: 713-392-1571 > > > > > -- > > > 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 - > > I will agree this problem can be solved outside of PL/SQL and is > probably better suited to one of the more generic Oracle newsgroups. > However solutions can be offered using both: > > SQL> create table round_amt( > 2 amt number(9,2) > 3 ); > > Table created. > > SQL> > SQL> insert all > 2 into round_amt > 3 values(110.25) > 4 into round_amt > 5 values(120.25) > 6 into round_amt > 7 values(113.25) > 8 into round_amt > 9 values(117.25) > 10 into round_amt > 11 values(116.25) > 12 into round_amt > 13 values(190.25) > 14 into round_amt > 15 values(180.25) > 16 into round_amt > 17 values(160.25) > 18 into round_amt > 19 values(150.25) > 20 into round_amt > 21 values(200.25) > 22 select * From dual; > > 10 rows created. > > SQL> > SQL> commit; > > Commit complete. > > SQL> > SQL> -- > SQL> -- Straight SQL solution > SQL> -- > SQL> > SQL> select amt, > 2 case when trunc(amt) between 110 and 112 then 110 > 3 when trunc(amt) between 113 and 137 then 125 > 4 when trunc(amt) between 138 and 167 then 150 > 5 when trunc(amt) between 168 and 200 then 200 end > rounded_amt > 6 from round_amt; > > AMT ROUNDED_AMT > ---------- ----------- > 110.25 110 > 120.25 125 > 113.25 125 > 117.25 125 > 116.25 125 > 190.25 200 > 180.25 200 > 160.25 150 > 150.25 150 > 200.25 200 > > 10 rows selected. > > SQL> > SQL> -- > SQL> -- PL/SQL solution > SQL> -- > SQL> > SQL> declare > 2 cursor get_amt is > 3 select amt, trunc(amt) t_amt > 4 from round_amt; > 5 begin > 6 for i in get_amt loop > 7 if i.t_amt between 100 and 112 then > 8 dbms_output.put_line(i.amt||' rounded is > 100'); > 9 elsif i.t_amt between 113 and 137 then > 10 dbms_output.put_line(i.amt||' rounded is > 125'); > 11 elsif i.t_amt between 138 and 167 then > 12 dbms_output.put_line(i.amt||' rounded is > 150'); > 13 elsif i.t_amt between 168 and 200 then > 14 dbms_output.put_line(i.amt||' rounded is > 200'); > 15 else > 16 dbms_output.put_line(i.amt||' is out of > range'); > 17 end if; > 18 > 19 end loop; > 20 > 21 end; > 22 / > 110.25 rounded is 100 > 120.25 rounded is 125 > 113.25 rounded is 125 > 117.25 rounded is 125 > 116.25 rounded is 125 > 190.25 rounded is 200 > 180.25 rounded is 200 > 160.25 rounded is 150 > 150.25 rounded is 150 > 200.25 rounded is 200 > > PL/SQL procedure successfully completed. > > SQL> > > 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 > -- Thanks & Regards Swaroop Thailuru Swamy Ph: 713-392-1571 -- 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