news <news@stripped> wrote on 10/26/2005 09:46:49 AM:
> I am unsure how to write this query, can someone help?
> I have two tables.
> One has a list of retailers (tbl_retailer):
> 1 Sprocket Supplies CH23 4PY
> The other has the sales by month for each retailer:
> 1 2004-01 100
> 1 2004-02 400
> 1 2004-03 300
> 1 2004-04 200
> 1 2004-05 300
> What I need is a way to output a list of each retailer with two columns
> at the end being sales this year to date and the equivalent sales for
> the previous year.
> So the columns would be:
> name this_years_sales_to_date last_years_sales_to_date
> Total sales for ever would be a simple GROUP BY query with a sum on the
> sales - but I cant see how I am going to get this info. Do I need to use
> nested queries?
Try this. It's a variation on the pivot table technique. We are
column-izing on a the year value derived from the string pattern of your
, sum(if(sbm.month_2 between '2004' and '2004-99',sbm.sales, 0))
, sum(if(sbm.month_2 between '2005' and '2005-99',sbm.sales, 0))
FROM retailers r
LEFT JOIN sales_by_month sbm
on sbm.retailerid = r.retailerid
GROUP BY r.name;
That should give you the yearly sales figures for every retailier in your
system for cy2004 and cy2005 (cy = calendar year)
Unimin Corporation - Spruce Pine