Totally lost on this function

From: <amerar_at_iwc.net>
Date: Mon, 31 Dec 2007 14:56:40 -0800 (PST)
Message-ID: <3d798d37-055a-4a41-9a39-b46936db73aa@z11g2000hsf.googlegroups.com>


Hi,

We have a query in one of our stored procedures, which I think may have a logic bug in it given the dta it selects.

However, I do not understand this SIGN function and what its purpose is here.......can someone help me and explain it to me??

Thanks in advance:

select
mt.COMP_NAME,mt.TICKER,nvl(to_char(to_date(sd.MONTH_end,'mm'),'Month'),'n/ a'),decode( sign(months_between(last_day(to_date(sd.MONTH_end,'mm')), sysdate)),1,

       to_char(last_day(to_date(sd.MONTH_end,'mm')-1*365),'mm/dd/rr'), 0,to_char(last_day(to_date(sd.MONTH_end,'mm')-0*365),'mm/dd/rr'),-1,

       to_char(last_day(to_date(sd.MONTH_end,'mm')-0*365),'mm/dd/ rr')),decode( sign(months_between(last_day(to_date(sd.MONTH_end,'mm')), sysdate)),1,

       to_char(last_day(to_date(sd.MONTH_end,'mm')-2*365),'mm/dd/rr'), 0,to_char(last_day(to_date(sd.MONTH_end,'mm')-1*365),'mm/dd/rr'),-1,

       to_char(last_day(to_date(sd.MONTH_end,'mm')-1*365),'mm/dd/ rr')),decode( sign(months_between(last_day(to_date(sd.MONTH_end,'mm')),sysdate)), 1,

       to_char(last_day(to_date(sd.MONTH_end,'mm')-3*365),'mm/dd/rr'), 0,to_char(last_day(to_date(sd.MONTH_end,'mm')-2*365),'mm/dd/rr'),-1,

       to_char(last_day(to_date(sd.MONTH_end,'mm')-2*365),'mm/dd/ rr')),decode( sign(months_between(last_day(to_date(sd.MONTH_end,'mm')), sysdate)),1,

       to_char(last_day(to_date(sd.MONTH_end,'mm')-4*365),'mm/dd/rr'), 0,to_char(last_day(to_date(sd.MONTH_end,'mm')-3*365),'mm/dd/rr'),-1,

       to_char(last_day(to_date(sd.MONTH_end,'mm')-3*365),'mm/dd/ rr')),decode( sign(months_between(last_day(to_date(sd.MONTH_end,'mm')), sysdate)),1,

       to_char(last_day(to_date(sd.MONTH_end,'mm')-5*365),'mm/dd/ rr'), 0,to_char(last_day(to_date(sd.MONTH_end,'mm')-4*365),'mm/dd/ rr'),-1,

       to_char(last_day(to_date(sd.MONTH_end,'mm')-4*365),'mm/dd/rr')) FROM..........
WHERE......... Received on Mon Dec 31 2007 - 16:56:40 CST

Original text of this message