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 列と purchaseswotax 列です。

関数を使用していて、それを名前として返しています...なぜ機能しないのですか?

4

3 に答える 3

1

ユニオンでは、sales 列と purchases 列として 0 を使用しましたが、-wotax 列に対しても使用しませんでした。組合が適切に機能するためには、一致する必要があります(販売と購入のために行ったので、ご存知だと思います)。

于 2010-07-07T21:26:40.897 に答える
0

前回見たとき、MySQL には計算フィールドの宣言サポートがありませんでした。計算列をテーブルに追加し、UPDATE/INSERT トリガーを使用してそれらを埋める必要があります。または、追加の計算列を含むビューを作成します。

于 2010-07-07T21:26:34.173 に答える
0

AS PurchasewotaxUNION の後半のコンマを削除する必要があります。

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 に答える