SQL查询-同一表的更高级别的求和

SQL查询-同一表的更高级别的求和,sql,sql-server,sum,Sql,Sql Server,Sum,我有一个SQL Server数据库中的数据,这个查询为我提供了最上面的表 SELECT date, resource_name, transfer_resource_name, SUM(calls) as calls FROM abc 我不知道如何填充total_calls列,如图中底部表格所示。基本上,我需要根据select date、resource\u name和total\u calls列对调用和组进行求和 任何意见都将不胜感激 使用子查询 SELECT O.date,

我有一个SQL Server数据库中的数据,这个查询为我提供了最上面的表

SELECT date, resource_name, transfer_resource_name, SUM(calls) as calls 
FROM abc
我不知道如何填充
total_calls
列,如图中底部表格所示。基本上,我需要根据select date、resource\u name和total\u calls列对调用和组进行求和

任何意见都将不胜感激

使用子查询

SELECT 
    O.date, 
    O.resource_name, 
    O.transfer_resource_name, 
    SUM(O.calls) as calls,
    (
        SELECT  SUM(I.calls)
        FROM    abc I
        WHERE   I.resource_name = O.resource_name
    ) total_calls    
FROM abc O
使用子查询

SELECT 
    O.date, 
    O.resource_name, 
    O.transfer_resource_name, 
    SUM(O.calls) as calls,
    (
        SELECT  SUM(I.calls)
        FROM    abc I
        WHERE   I.resource_name = O.resource_name
    ) total_calls    
FROM abc O

您的查询在SQL Server中不起作用,因此我假定实际的查询有一个
分组依据

然后,您可以使用窗口功能执行所需操作:

SELECT date, resource_name, transfer_resource_name, SUM(calls) as calls,
       SUM(SUM(calls)) OVER (PARTITION BY resource_name) as total_calls 
FROM abc
GROUP BY date, resource_name, transfer_resource_name;

您的查询在SQL Server中不起作用,因此我假定实际的查询有一个
分组依据

然后,您可以使用窗口功能执行所需操作:

SELECT date, resource_name, transfer_resource_name, SUM(calls) as calls,
       SUM(SUM(calls)) OVER (PARTITION BY resource_name) as total_calls 
FROM abc
GROUP BY date, resource_name, transfer_resource_name;

首先按
Resource\u Name
分组,然后将原始表上的结果合并在一起选择如何?首先按
Resource\u Name
分组,然后将原始表上的结果合并在一起选择如何?是的,您是对的。它需要有一个小组。这正是我需要的。谢谢戈登。是的,你说得对。它需要有一个小组。这正是我需要的。谢谢戈登。我也会试试这个,谢谢你的帮助山姆。@Mixer,戈登的答案更好,所以除非你有任何问题,否则就用他的答案。我的答案是通用SQL,但如果你是特定于SQL Server的(你说你是),那么就使用
分区方式
。我也会尝试一下,谢谢你的帮助。Sam@Mixer,Gordon的答案更好,所以除非你有任何问题,还是用他的答案吧。我的答案是通用SQL,但如果您是特定于SQL Server的(您说您是),那么请使用
partitionby