Объединить несколько записей в одну строку в таблице - PullRequest
2 голосов
/ 13 апреля 2011

У меня есть таблица, в которой есть несколько записей одного и того же идентификатора торгового агента, но с разной суммой продаж.Как я могу удалить несколько строк и просто получить совокупное значение.

Давайте, например, предположим, что структура таблицы выглядит следующим образом -

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 ]

3 голосов
/ 13 апреля 2011
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 голос
/ 13 апреля 2011

Это самый простой способ сделать это:

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 голосов
/ 13 апреля 2011
SELECT SalesAgentID, SUM(SalesAmount) FROM Sales GROUPBY SalesAgentID

Но здесь что-то не так ... Почему ваша таблица имеет ОБА SalesAgentId и SalesAgentName?

Она должна содержать только идентификатор, имя должно быть в таблице SalesAgent.Тогда вы получите имя с помощью соединения

...