2011-04-13 98 views
2

我有一個表具有相同銷售代理I​​D但銷售金額不同的多個記錄。我怎樣才能刪除多行,只有總價值的總和。將多個記錄合併到一個表中的一行

讓我們例如假設表結構如下 -

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字段添加到現有表中並實現它?

回答

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; 
+0

這實際上滿足了將數據聚合到同一個表中的OP要求。 (我也沒有意識到你可以通過使用INTO自動創建臨時表。) – 2011-04-13 17:02:17

0
SELECT SalesAgentID, SUM(SalesAmount) FROM Sales GROUPBY SalesAgentID 

但是這裏有什麼問題......爲什麼你的表有兩個SalesAgentId和SalesAgentName?

它應該只包含ID,名稱應該在SalesAgent表中。然後,你就檢索與該名加入

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 
+0

不應在GROUP BY子句中還包括salesagentname? – Kanini 2011-04-13 20:31:47

+0

@Kanini哎呀。是。固定。 – 2011-04-13 20:36:51

相關問題