0

对于某些类别,我的查询返回每个月的销售总额和每个月的购买总额。

SELECT theMonth, 
       sum(Sales) as sumSales, 
       sum(Saleswotax) as sumSaleswotax, 
       sum(Purchases) as sumPurchases, 
       sum(Purchaseswotax) as sumPurchaseswotax 
 FROM ( SELECT date_format(saledate, '%Y-%m') AS theMonth, 
               sales.cost as Sales, 
               ROUND(sales.cost*0.85, 2) AS Saleswotax, 
               0 AS Purchases, 
               0 AS Purchaseswotax 
          FROM sales, products 
         WHERE sales.product = products.name 
           AND category='Food'
        UNION ALL
        SELECT date_format(purchasedate, '%Y-%m') AS theMonth, 
               0 as Sales, 
               0 AS Saleswotax, 
               purchases.cost as Purchases, 
               ROUND(purchases.cost*0.85, 2) AS Purchaseswotax, 
          FROM purchases) AS all_costs
    group by theMonth

我试图在我的查询中返回一个列(表中实际上并不存在),它只是对现有表的计算。即 saleswotax 和 purchasewotax 列。

我正在使用一个函数,并将其作为名称返回...为什么它不起作用?

4

3 回答 3

1

在联合中,您使用 0 作为销售和采购列,但对 -wotax 列也没有这样做。他们需要配合工会才能正常工作(我想你知道这一点,因为你是为销售和采购做的)。

于 2010-07-07T21:26:40.897 回答
0

上次我看到时,MySQL 中没有对计算字段的声明性支持。您必须将计算列添加到表中并使用 UPDATE/INSERT 触发器填充它们。或者创建带有额外计算列的视图。

于 2010-07-07T21:26:34.173 回答
0

您需要AS Purchasewotax在 UNION 的后半部分删除逗号:

SELECT theMonth, 
       sum(Sales) as sumSales, 
       sum(Saleswotax) as sumSaleswotax, 
       sum(Purchases) as sumPurchases, 
       sum(Purchaseswotax) as sumPurchaseswotax 
 FROM ( SELECT date_format(saledate, '%Y-%m') AS theMonth, 
               sales.cost as Sales, 
               ROUND(sales.cost*0.85, 2) AS Saleswotax, 
               0 AS Purchases, 
               0 AS Purchaseswotax 
          FROM sales, products 
         WHERE sales.product = products.name 
           AND category='Food'
        UNION ALL
        SELECT date_format(purchasedate, '%Y-%m') AS theMonth, 
               0 as Sales, 
               0 AS Saleswotax, 
               purchases.cost as Purchases, 
               ROUND(purchases.cost*0.85, 2) AS Purchaseswotax
          FROM purchases) AS all_costs
 GROUP BY theMonth
于 2010-07-07T23:13:46.657 回答