【发布时间】:2015-07-08 10:01:28
【问题描述】:
我正在尝试找到一种方法让客户支付最后的价格,我们目前拥有的代码是:
SELECT Product.ProductCode,
COUNT(Product.ProductCode) AS [Qty Baught],
Product.Description,
Customer.CustomerCode,
Customer.Name,
MAX(OrderHeader.DateTimeCreated) AS [Date],
OrderLine.UnitSellPriceInCurrency AS Sell
FROM Customer
INNER JOIN OrderHeader ON Customer.CustomerID = OrderHeader.CustomerID
INNER JOIN OrderLine ON OrderHeader.OrderID = OrderLine.OrderID
INNER JOIN Product ON OrderLine.ProductID = Product.ProductID
GROUP BY Product.Description,
Product.ProductCode,
Customer.CustomerCode,
Customer.Name,
OrderLine.UnitSellPriceInCurrency
HAVING (Product.ProductCode = 'bcem002')
AND (Customer.CustomerCode = '1000')
ORDER BY MAX(OrderHeader.DateTimeCreated) DESC
此代码显示每次价格更改但我只想查看最后一个价格,但 DateCreated 和支付的价格 (UnitSellPriceInCurrency) 在不同的表上。
有没有办法按 (DateCreated) 分组 (UnitSellPriceInCurrency) 或其他方法。
我在这方面还很陌生,所以如果有明显的做法,对不起。
编辑:我现在用新代码得到了什么,我得到的大部分价格都与产品无关
我想要的是只显示最后支付的价格,但在某种程度上我可以更改我正在搜索的客户和产品。
【问题讨论】:
-
请提供sqlfiddle.com 表结构和虚拟数据。同时显示它的预期输出。
-
您可以将条件移至 WHERE 子句。 HAVING 子句用于聚合函数条件。
-
您是否确实验证了输出的重要部分是否有效?我一直看到
COUNT(Product.ProductCode) AS [Qty Baught]- 并且怀疑这一点是正确的...... -
@Abecee 是的,我知道我已将其更改为“SUM(OrderLine.Quantity) AS [Qty Bought]”
标签: sql sql-server-2008 group-by