1

我有一个查询,它返回来自客户的发货的 SUM 值及其分组shipment_id。值是正确的。

SELECT SUM(DISTINCT((article.unit_price * article.tax)*shipment.amount)) as subtotal 
  FROM shipment 
 INNER JOIN customer ON customer.customer_id = shipment.customer_id 
 INNER JOIN article ON shipment.article_id = article.article_id 
 WHERE shipment.type_id = 2 
   AND shipment.customer_id = 947 
 GROUP BY shipment.shipment_id

当我删除 GROUP BY 以从客户那里获取总值时,返回的值不正确。

有人可以帮我解决这个问题吗?

4

1 回答 1

2

您的联接有问题。我想不出sum(distinct )在查询中有意义的情况。您使用不正确。发生的情况是,您的货件中有重复的物品,并且货件中的值正常(可能只有一件货件)。但是,不同的货件具有完全相同的物品和相同的数量。distinct 会删除此类重复项。

解决方案很简单,只需删除distinct

SELECT SUM((article.unit_price * article.tax)*shipment.amount) as subtotal 
FROM shipment INNER JOIN
     customer
     ON customer.customer_id = shipment.customer_id INNER JOIN
     article
     ON shipment.article_id = article.article_id 
WHERE shipment.type_id = 2 AND shipment.customer_id = 947 
于 2012-12-21T14:03:53.890 回答