首页 > 解决方案 > 如何使用 SUM 进行 INNER JOIN

问题描述

我正在尝试加入两张表,一张是销售表,一张是个人资料表。两个表都有相同的客户没有,但销售表没有客户名称。我如何内部加入他们,以便我可以获得前 10 名最高销售额的客户,但我想显示他们的名字。我尝试使用以下查询:

SELECT TOP 10 b.Amount, a.CustomerName  
FROM       SalesDetail b 
INNER JOIN CustomerProfile a 
        ON a.CustomerNo = b.CustomerNo 
ORDER BY Amount DESC

并显示重复的客户名称,金额未汇总。尝试对客户进行分组会提示错误

SELECT TOP 10 b.Amount, a.CustomerName  
FROM       SalesDetail b 
INNER JOIN CustomerProfile a 
        ON a.CustomerNo = b.CustomerNo 
GROUP BY a.CustomerName 
ORDER BY b.Amount DESC

没有内部连接,这是我到目前为止所做的。我可以总结一下,但我只会得到客户编号和销售额。

SELECT  TOP 10 CustomerNo, SUM (Amount) AS 'Total' 
FROM     SalesDetail 
GROUP BY CustomerNo

感谢您的任何建议。

标签: sql-servertsql

解决方案


我正在尝试加入两张表,一张是销售表,一张是个人资料表。两张桌子都有相同的客户 否

只需INNER JOINON CustomerNo

FROM       SalesDetail s
INNER JOIN CustomerProfile c
        ON s.CustomerNo = c.CustomerNo 

这样我就可以获得客户销售额最高的前10名

You will need to use GROUP BY and ORDER BY together with TOP

SELECT   TOP (10) c.CustomerName, SUM (Amount) AS Total
FROM       SalesDetail s
INNER JOIN CustomerProfile c
        ON s.CustomerNo = c.CustomerNo 
GROUP BY c.CustomerName  
ORDER BY SUM (Amount) DESC

推荐阅读