Totally lost on this function
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