SQL Sum和Group By需要检索2个以上的列

时间:2017-02-27 16:27:37

标签: sql sql-server group-by

如果使用SUM函数和Group By语句,我只能显示2列。

需要从表中选择要显示的更多列。

例如,我希望输出显示客户,总数量,客户名称,客户地址

客户表:

+----------+--------------+------------+---------------+
|Customer  |OrderQuantity |CustomerName|CustomerAddress|
+----------+--------------+------------+---------------+
|Mike      |5             |Smith       |123 Main St.   |
+----------+--------------+------------+---------------+
|Sally     |6             |Smithon     |124 Main St.   |
+----------+--------------+------------+---------------+
|Sally     |4             |Smithon     |124 Main St.   |
+----------+--------------+------------+---------------+
|Mike      |2             |Smith       |123 Main St.   |
+----------+--------------+------------+---------------+

当前SQL语句:

select customer,SUM(order_quantity) as total_quantity
from smr.dbo.tdpb_recall_manual_entry m
group by
customer

当前结果:

+----------+--------------+
|Customer  |OrderQuantity |
+----------+--------------+
|Mike      |7             |
+----------+--------------+
|Sally     |10            |
+----------+--------------+

期望的结果:

+----------+--------------+------------+---------------+
|Customer  |OrderQuantity |CustomerName|CustomerAddress|
+----------+--------------+------------+---------------+
|Mike      |7             |Smith       |123 Main St.   |
+----------+--------------+------------+---------------+
|Sally     |10            |Smithon     |124 Main St.   |
+----------+--------------+------------+---------------+

在期望的结果中

3 个答案:

答案 0 :(得分:0)

假设给定客户的名称和地址数据相同,只需在group by中包含列并选择。

select customer,
    CustomerName,
    CustomerAddress,
    SUM(order_quantity) as total_quantity
from smr.dbo.tdpb_recall_manual_entry m
group by customer,
    CustomerName,
    CustomerAddress

如果没有,您可以使用MAX函数来获取其中一个:

select customer,
    SUM(order_quantity) as total_quantity,
    max(CustomerName) customerName,
    max(CustomerAddress) CustomerAddress
from smr.dbo.tdpb_recall_manual_entry m
group by customer

另请注意,您的表格未完全标准化。您应该有一个单独的customer表,其中包含客户ID和详细信息,以及一个{customer}作为外键的orders表,来自customer表和order_quantity。

答案 1 :(得分:0)

当您编写选择客户的订单时,只需写下您需要的结果。 selext语句选择列,所以, 只是查询这个。 选择客户,SUM(order_quantity)为“总数量”,客户名称,来自......的客户地址,然后选择其余部分。获得理想的结果。

记住始终将您想要的内容放入查询中。在select语句的开头。

答案 2 :(得分:0)

像这样进行查询, 在import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { title = 'app works!'; } 子句中添加要查看的所有列,然后将未应用分析函数的列分组。

SELECT