我有三个表产品,销售和成本。
sales和products表每个都有一个十进制类型的成本字段和一个日期类型的日期字段。
此外,sales表有一个productname字段,该字段与products表中的productname字段匹配。
产品表还有一个类别字段。
我想选择每个月的所有销售和所有购买,并将其显示在按月分组的单独列中,直到当前年份。
如下所示
Sales Purchases
January 100 50
Febuary 100 50
March 100 50
April 100 50
May 100 50
June 100 50
July 30 50
购买表与任何其他表无关。
但是,sales表productname字段仅包含products.productname。
中存在的产品我想添加到查询的末尾
WHERE sales.productname = products.productname AND category ='Food'
我不确定如何返回多个列,每月汇总一次,然后按月分组。
我在这里问了一些类似的东西,并采取了一个解决方案,但它在一栏中一起归还了销售和购买。
我如何将它们作为单独的列保留?
答案 0 :(得分:1)
与Dave的答案有些相似,但会显示销售和购买数月的存在:
SELECT theMonth, sum(Sales) as sumSales, sum(Purchases) as sumPurchases
FROM
( SELECT date_format(theDate, "%Y-%m") AS theMonth, Cost as Sales, 0 AS Purchases
FROM sales, products
WHERE sales.productname=products.productname AND category='Food'
UNION ALL
SELECT date_format(theDate, "%Y-%m") AS theMonth, 0 as Sales, Cost as Purchases
FROM purchases
) AS all_costs
group by theMonth;
(以下评论编辑)
答案 1 :(得分:0)
尝试这个或类似的东西......
SELECT sal.theMonth, sal.sumSales, pur.sumPurchases FROM ( SELECT date_format(theDate, "%Y-%m") AS theMonth, sum(sales) AS sumSales FROM sales_table GROUP BY theMonth ) AS sal INNER JOIN ( SELECT date_format(theDate, "%Y-%m") AS theMonth, sum(purchases) AS sumPurchases FROM purchases_table GROUP BY theMonth ) AS pur ON sal.theMonth = pur.theMonth
显然,您需要根据表格定义调整表格和字段名称...