问题描述
我有一个表,其中包含具有相同销售代理ID但销售额不同的多个记录。如何删除多行,而只得到总价值的汇总。
例如,假设表结构如下:
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表中。然后,您将使用联接检索名称