1

Volusion の SQL エクスポートを作成し、「ステップ 2/3 - レコードセットを開く」でフリーズを引き起こすエラーを取得します。

SELECT 
    od.ProductCode
    , SUM(od.Quantity) AS 'Total Units Sold'
    , SUM(od.TotalPrice) AS 'Total Payment Received'
    , SUM(ISNULL(od.Vendor_Price, 0) * od.Quantity) AS 'Total Cost'
    , SUM(od.TotalPrice) / SUM(od.Quantity) AS 'Average Price'
    , ((SUM(od.TotalPrice) - SUM(ISNULL(od.Vendor_Price, 0) * od.Quantity)) / SUM(od.TotalPrice)) AS 'Average Margin'
FROM OrderDetails AS od
LEFT JOIN Orders AS o
    ON o.OrderID = od.OrderID
LEFT JOIN Customers AS c 
    ON c.CustomerID = o.CustomerID
WHERE c.CustomerID >= 23
    AND c.CustomerID <> 24
    AND o.Orderstatus <> 'cancelled'
    AND c.AccessKey <> 'A'
    AND o.OrderDate BETWEEN '2/28/2015 0:00' AND '5/28/2015 23:59'
    AND o.Orderstatus NOT LIKE '%Returned'
GROUP BY 
    od.ProductCode
ORDER BY SUM(od.Quantity) DESC

完全に当惑しましたが、問題の原因となっている行を特定しました。

, ((SUM(od.TotalPrice) - SUM(ISNULL(od.Vendor_Price, 0) * od.Quantity)) / SUM(od.TotalPrice)) AS 'Average Margin'

その行が削除されると、正常に返されます。

どんな助けでも大歓迎です。

ありがとう、

編集: OrderDetails には多くの列がありますが、問題の 3 つは次のようになります。

数量、Vendor_Price、TotalPrice

4

1 に答える 1

0

クエリに構文エラーはありません。あなたが言ったように、エラーが発生しています

, ((SUM(od.TotalPrice) - SUM(ISNULL(od.Vendor_Price, 0) * od.Quantity)) 
           / SUM(od.TotalPrice)) AS 'Average Margin'

そこには2つの可能性しかない

  1. 列名のつづりが間違っています。ただし、上記の列はすべて以前の列でも使用されています。だから大丈夫

  2. 次の問題は、除算がここで発生している可能性があります。ゼロによる除算が問題になる可能性があります。チェック Sum(od.TotalPrice) は常にゼロ以外です..

于 2015-05-28T19:33:42.673 に答える