我遇到了我认为应该是SQL Server 2017中一个简单问题的问题。我需要显示给定销售的总销售价格。这就是我写的(请注意,我删除了totalprice的总和公式,因为它返回了错误):
USE [Antiques]
GO
DECLARE @TotalPrice INT
SELECT
Sales.SaleNo,
Sales.SalesDate,
Customers.FirstName,
Customers.LastName,
Products.Price,
@TotalPrice AS TotalPrice
FROM
Customers JOIN Sales ON Customers.CustomerID = Sales.CustomerID
JOIN SalesProducts ON Sales.SaleNo = SalesProducts.SaleNo
JOIN Products ON SalesProducts.ProductID = Products.ProductID
WHERE (Products.ProductID = SalesProducts.ProductID)
GO
即使我删除了商品价格(我只是暂时输入了商品价格,也不会在最终代码中使用),每次销售仍然会有多行(每笔销售商品有1行)。我是否使用了错误的联接?我怎么能像这样:
有人可以告诉我我在做什么错吗?我尝试了许多使用Sum函数和Group By的方法,但都失败了。 (注意:不幸的是,这必须是基本查询而不是存储过程)
答案 0 :(得分:0)
实际上,您并不太远。我会将分组移动到派生表中,然后将其加入,以获取总价。
SELECT sales.saleno,
sales.salesdate,
customers.firstname,
customers.lastname,
x.totalprice
FROM sales
INNER JOIN customers
ON customers.customerid = sales.customerid
INNER JOIN (SELECT salesproducts.saleno,
sum(products.price) totalprice
FROM salesproducts
INNER JOIN products
ON products.productid = salesproducts.productid
GROUP BY salesproducts.saleno) x
ON x.saleno = sales.salesno;