我遇到的问题我认为应该是SQL Server 2017中的一个简单问题。我需要显示给定销售的总销售价格。这就是我写的(注意我删除了总价格和公式,因为它返回了一个错误):
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并失败的方法。 (注意:这不一定是基本查询而不是存储过程)
其实你离我不太远。我将分组移动到派生表中并加入,以获得总价。
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;