将多个销售的总和汇总到一个列中

时间:2019-01-26 15:04:25

标签: sql-server

我遇到了我认为应该是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

这是结果: enter image description here

即使我删除了商品价格(我只是暂时输入了商品价格,也不会在最终代码中使用),每次销售仍然会有多行(每笔销售商品有1行)。我是否使用了错误的联接?我怎么能像这样: enter image description here

有人可以告诉我我在做什么错吗?我尝试了许多使用Sum函数和Group By的方法,但都失败了。 (注意:不幸的是,这必须是基本查询而不是存储过程)

1 个答案:

答案 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;