我是一个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重复项,因为我已经找到了两个记录的总和。感谢
答案 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