sql - 尝试使用带有SUM函数的INNER JOIN和GROUP BY SQL,不起作用

标签 sql select join group-by inner-join

我没有解决这个问题,想知道是否有人可以帮助我。

我有2个表分别称为RES_DATAINV_DATA

RES_DATA包含我的客户如下

CUSTOMER ID | NAME

1, Robert
2, John
3, Peter


INV_DATA包含其发票如下

INVOICE ID | CUSTOMER ID | AMOUNT

100, 1, £49.95
200, 1, £105.95
300, 2, £400.00
400, 3, £150.00
500, 1, £25.00


我正在尝试写一个SELECT声明,该声明将给我如下所示的结果。

CUSTOMER ID | NAME | TOTAL AMOUNT

1, Robert, £180.90
2, John, £400.00
3, Peter, £150.00


我想我需要2个INNER JOINS以某种方式添加按客户表分组的INVOICES表的表和SUM值,但说实话我认为我缺少了一些东西。甚至无法接近我需要的结果。

最佳答案

这应该工作。

SELECT a.[CUSTOMER ID], a.[NAME], SUM(b.[AMOUNT]) AS [TOTAL AMOUNT]
FROM RES_DATA a INNER JOIN INV_DATA b
ON a.[CUSTOMER ID]=b.[CUSTOMER ID]
GROUP BY a.[CUSTOMER ID], a.[NAME]


我使用SQL Fiddle针对SQL Server 2008进行了测试:http://sqlfiddle.com/#!3/1cad5/1

基本上,这里发生的事情是,由于有了连接,您在“左侧”(即RES_DATA表)上获得的每一行都在“右侧”(即INV_DATA表)上具有相同的行相同的[CUSTOMER ID]值。当您仅对左侧的列进行分组,然后对右侧的[AMOUNT]列进行求和时,它将使左侧的一行保持完整,并从右侧对匹配值求和。

关于sql - 尝试使用带有SUM函数的INNER JOIN和GROUP BY SQL,不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23031118/

相关文章:

java - sql查询检索与mysql和java的一个用户匹配的联系人记录的总和

mysql - 打印两个表的数据

sql - 将聚簇索引应用于 SQL Server 2012 中的 View

mysql - MySQL 中按一个字段进行分组并按 rand 对另一个字段进行排序

Sql-server Full Text CONTAINS + COLLATE 忽略重音问题

mysql - 内部连接两个表

mysql - 从关联表中选择行数而不进行子选择

mysql - 在 JOIN 之前对两个表执行 SELECT

sql - 相关子查询出现问题,内部查询找不到列

javascript - jQuery/Grails将多个选项/值标记为在多个选择框中选择