SET vStartDate = 01/01/2006; //תאריך התחלה
LET vEndDate = Date(Today()); //תאריך סיום
Temp_Date:
LOAD
Date(Date('$(vEndDate)'+1) - RecNo(),'DD/MM/YYYY') as Date
AUTOGENERATE Date('$(vEndDate)','DD/MM/YYYY') - Date('$(vStartDate)','DD/MM/YYYY');
Calender:
LOAD
Date,
Year(Date) as Year,
'Q' & ceil(num(Month(Date))/3) as Qtr,
Month(Date) as Month,
Week(Date) as Week,
WeekDay(Date) as Weekday,
Day(Date) as Day,
Year(Date) & '-' & 'Q' & ceil(num(Month(Date))/3) as [Year-Qtr],
Year(Date) & '-' & Month(Date) as [Year-Month],
Year(Date) & '-' & right('00' & week(Date),2) as [Year-Week],
InWeekToDate(Date,Today(),(Year(Date)-Year(Today()))*52)*(Year(Today())-Year(Date)) as [Week TD],
InMonthToDate(Date,Today(),(Year(Date)-Year(Today()))*12)*(Year(Today())-Year(Date)) as [Month TD],
InQuarterToDate(Date,Today(),(Year(Date)-Year(Today()))*4)*(Year(Today())-Year(Date)) as [Qtr TD],
InYearToDate(Date,Today(),Year(Date)-Year(Today()))*(Year(Today())-Year(Date)) as [Year TD],
Date-Today() as [Date Diff],
((Year(Date)-Year(Today()))*52)+(Week(Date)-Week(Today())) as [Week Diff],
((Year(Date)-Year(Today()))*12)+(Month(Date)-Month(Today())) as [Month Diff],
((Year(Date)-Year(Today()))*4)+(Qtr1(Month(Date))-Qtr1(Month(Today()))) as [Qtr Diff],
Year(Date)-Year(Today()) as [Year Diff]
RESIDENT Temp_Date;
DROP TABLE Temp_Date;
//***************************************************************
מלבד השדות הרגילים בכל טבלת Calendar, אני מוסיף שתי סוגים של שדות עזר – Diff, TD
בעזרת שדות אלו ניתן לבצע השוואות של תקופות על מימד הזמן ביתר קלות.
דוגמא:
שדה [Month Diff] החודש הקודם יכיל -1 ולפני חודשיים יהיה -2 וככה הלאה, אז כאשר נרצה לבצע השוואת מכירות לחודש קודם נוכל לשים ב set analysis את השדה כאשר הוא שווה ל -1
כנ"ל כמובן לגבי שאר שדות ה Diff.
Sum({$<[Month Diff]={0}>} Sales) - מכירות חודש נוכחי
Sum({$<[Month Diff]={-1}>} Sales) - מכירות חודש קודם
כאשר נרצה לבצע השוואה של מכירות החודש לעומת המכירות באותו חודש שנה שעברה אבל רק לימים שעברו מתחילת החודש (כלומר אם היום ה 19 לאוקטובר 2009 אז גם עד ה 19 לאוקטובר 2008)
אז נשתמש בשדה [Month TD]. כנ"ל כמובן לגבי כל שאר שדות TD.
Sum({$<[Month TD]={0}>} Sales) - מכירות ספטמבר 2009
Sum({$<[Month TD]={-1}>} Sales) - מכירות ספטמבר 2008 עד ה 20 לחודש
שימו לב, ע"מ למצוא את הריבעון אני משתמש בפונקצית Qtr1 שצריך להכניס אותה למקרו.
FUNCTION Qtr1(MyMonth)
if MyMonth < 4 then
Qtr1=1
elseif MyMonth < 7 then
Qtr1 = 2
elseif MyMonth < 10 then
Qtr1 = 3
else
Qtr1 = 4
end if
END FUNCTION