从同一个表中删除重复项

时间:2013-12-28 13:25:39

标签: sql sql-server sql-server-2008 dml

我是一个SQL新手,这是我发布的第一个问题。我需要你的专业建议。请原谅我,如果格式不正确,或者过去已经拍过这个问题,但我找不到解决方案。

我有一个名为DEPOSITORS的表,其中有超过4500条记录。 account_number字段中的一些account_number是重复的但具有不同的DEPS数量。为了通过account_number获取TOT_DEPS数量,我运行以下SELECT语句:

select account_number,deps,sum(deps) over(partition by account_number) as Tot_Deps from depositors
order by account_number 

+-------------------+----------+------------+
| ACCOUNT_NUMBER    |    DEPS  |  TOT_DEPS  |
+-------------------+----------+------------+
| Account_number1   |    50.00 |    90.00   |
| Account_number1   |    40.00 |    90.00   |
| Account_number2   |    50.00 |    50.00   |
| Account_number3   |    40.00 |    70.00   |
| Account_number3   |    30.00 |    70.00   |
+-------------------+----------+------------+

我需要做什么,但我被卡住是删除account_number重复项,因为我已经找到了两个记录的总和。感谢

3 个答案:

答案 0 :(得分:1)

您只需要聚合:

select account_number, sum(deps) as Tot_Deps
from depositors
group by account_number
order by account_number ;

答案 1 :(得分:0)

用它来删除重复记录:

DELETE depositors
FROM depositors
LEFT OUTER JOIN (
SELECT MIN(RowId) as RowId, account_number, deps 
FROM depositors
GROUP BY account_number, deps
) as KeepRows ON
depositors.RowId = KeepRows.RowId
WHERE
KeepRows.RowId IS NULL

答案 2 :(得分:0)

如果我理解正确,您需要以下批次:

select ACCOUNT_NUMBER, SUM(DEPS) DEPS into #t1 from DEPOSITORS group by ACCOUNT_NUMBER
delete from DEPOSITORS
insert into DEPOSITORS select * from #t1
drop table #t1
go
select * from DEPOSITORS
相关问题