I'm not after small code i'm after maintainable code where the date range for this report would be always changing. So if i can get it to one select statement i would on have to pass in some variables and it would create the moving average. Plus what if the sales people decide they want to change moving average from 10 weeks to 5 weeks or change it to 15 weeks. People drive me nuts with i want it to do this or that , Of course they have no idea how complicated it sometimes to get what they want.
Thanks you for your ideas Dean and Jorge gives me some ideas to play with.
Jorge Godoy wrote:
Em Thursday 21 February 2008 18:37:47 Justin escreveu:
Now i could write a function to do this or do it in C++ program that
creates query with all kinds of unions. I'm wondering if there is a way
to create this in a single select statement??
I can't think of a way to do it???
Why you need it in one query? Think of maintenability not on code size.
Solve the problem in parts, calculating it for one week -- or ten, you can use
the interval type -- and then moving on...
The function would look like:
WHILE start_date + '10 weeks'::interval < today:SELECT INTO weeks_avg avg(value) FROM table WHERE date BETWEEN start_date AND
start_date+'10 weeks'::interval;start_date:=start_date + '1 week'::interval;
END WHILE;
Start from that and you'll have it done. (Of course, above is pseudo code and
untested...)