0

エイリアス OriginalCost と QuantityDiscount を使用して計算をしようとしています。GROUP BY、HAVING、または ORDER BY でのみエイリアスを使用できることは理解していますが、正しい方法で行う方法についてはわかりません。このコードで発生しているエラーは

行 9 無効な列名 'QuantityDiscount'。

SELECT  Orders.Orderid, Inventory.partid, Description, Qty, (Inventory.price) AS UnitPrice, 
        (OrderItems.Qty * Inventory.price) AS OriginalCost, 
        CASE 
            WHEN OrderItems.Qty >= 5 THEN (OriginalCost) * .05)
            WHEN OrderItems.Qty >= 10 THEN (OriginalCost) * .10)
            ELSE 0
        END AS QuantityDiscount,
        SUM(OriginalCost  - QuantityDiscount) AS FinalCost
FROM Orders
JOIN OrderItems ON OrderItems.orderid = OrderItems.orderid
JOIN Inventory ON ORDERITEMS.partid = Inventory.partid
ORDER BY QTY DESC
4

4 に答える 4

1

したがって、次の方法でエイリアスを定義できます。

SELECT Alias = TableAlias.Field         --prefixed to a field
       ,TableAlias.Field as OtherAlias  --at the end of a field
FROM Table TableAlias                   --on a table
--then use by anything that is caculated after that part in the order of operations.
ORDER BY Alias;

その後、それらが定義されている領域の後にそれらを使用できます。

SQL 操作の順序:

  1. FROM 句
  2. WHERE句
  3. GROUP BY 句
  4. HAVING 句
  5. SELECT句
  6. ORDER BY 句
于 2013-04-13T02:15:36.157 に答える