我有一张表,其中包含相同销售代理ID但销售额不同的多条记录。如何删除多行,只有总值的总和。
让我们举例说明表结构如下 -
SalesAgentId, SalesAgentName, SalesAmount
111 , John Doe , 8437.00
112 , John O Connor , 5849.00
111 , John Doe , 438.00
112 , John O Connor , 1234.00
我想要的是(即使它是在不同的表中)以下 -
SalesAgentId, SalesAgentName, SalesAmount
111 , John Doe , 8875.00
112 , John O Connor , 7083.00
我们可以使用SQL语句执行此操作还是仅应该是存储过程?如果它正在使用SP,我们是否必须遍历每个记录...检查它是否始终存在,如果是,只需将SalesAmount字段添加到现有表并实现它?
答案 0 :(得分:3)
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;
答案 1 :(得分:1)
这是我能想到的最简单的方法:
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
答案 2 :(得分:0)
SELECT SalesAgentID, SUM(SalesAmount) FROM Sales GROUPBY SalesAgentID
但是这里有问题...为什么你的桌子有SalesAgentId和SalesAgentName?
它应该只包含ID,名称应该在SalesAgent表中。然后,您将使用连接
检索名称