将多个记录合并到表的一行中

问题描述

我有一个表,其中包含具有相同销售代理I​​D但销售额不同的多个记录。如何删除多行,而只得到总价值的汇总。 例如,假设表结构如下:
SalesAgentId,SalesAgentName,SalesAmount
111,John Doe,8437.00
112,John O Connor,5849.00
111,438.00
112,1234.00
我想要的是(即使它位于不同的表中)以下内容-
SalesAgentId,8875.00
112,7083.00
我们可以使用sql语句执行此操作吗?还是仅应将其作为存储过程?如果使用的是SP,我们是否必须遍历每条记录...检查它是否始终存在,如果是,只需将SalesAmount字段添加到现有表中并实现它?     

解决方法

SELECT SalesAgentId,SalesAgentName,SUM(SalesAmount) AS SalesAmount
  INTO #AggSales
  FROM Sales
 GROUP BY SalesAgentId,SalesAgentName;

TRUNCATE TABLE Sales;    

INSERT INTO Sales
SELECT * FROM #AggSales;

DROP TABLE #AggSales;
    ,这是我想到的最简单的方法:
create table #tempSales (salesagentid int,salesagentname varchar(50),salesamount money)
go

insert into #tempSales 
select salesagentid,salesagentname,sum(salesamount)
from salesTable
group by salesagentid,salesagentname
go

select *
from #tempSales
    ,
SELECT SalesAgentID,SUM(SalesAmount) FROM Sales GROUPBY SalesAgentID
但是这里有问题...为什么您的表同时具有SalesAgentId和SalesAgentName? 它应仅包含ID,名称应在SalesAgent表中。然后,您将使用联接检索名称