【问题标题】:How to INNER JOIN with SUM如何使用 SUM 进行 INNER JOIN
【发布时间】:2019-12-31 02:34:45
【问题描述】:

我正在尝试加入两张表,一张用于销售,一张用于配置文件。两个表都有相同的客户没有,但销售表没有客户名称。我如何内部加入他们,以便我可以获得前 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

感谢您的任何建议。

【问题讨论】:

  • 提示:养成使用至少有微弱意义的别名的习惯,例如SalesDetail as SDCustomerProfile as CP。它比ba 让生活更轻松。

标签: sql-server tsql


【解决方案1】:

我正在尝试加入两张表,一张用于销售,一张用于配置文件。 两张桌子都有相同的客户编号

只需使用INNER JOINON CustomerNo

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

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

您需要将GROUP BYORDER BYTOP 一起使用

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

【讨论】:

  • 似乎我没有在 ORDER BY 中包含 SUM。非常感谢您的帮助。
猜你喜欢
  • 2010-10-06
  • 1970-01-01
  • 2010-12-21
  • 1970-01-01
  • 2021-01-18
  • 2014-03-13
  • 1970-01-01
  • 2018-06-12
  • 1970-01-01
相关资源
最近更新 更多