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

问题描述 投票:0回答:1

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

这是结果:enter image description here

即使我删除了商品价格(我刚刚暂时放入并且不会在最终代码中),每次销售仍然有多行(销售中的每件商品都有1行)。我使用了错误的连接吗?我怎么能看起来像这样:enter image description here

谁能告诉我我做错了什么?我已经尝试了很多使用Sum函数和Group By并失败的方法。 (注意:这不一定是基本查询而不是存储过程)

sql-server
1个回答
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;
© www.soinside.com 2019 - 2024. All rights reserved.