【问题标题】:Remove duplicates from the same table从同一个表中删除重复项
【发布时间】:2014-01-15 21:28:00
【问题描述】:

我是 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 重复项,因为我已经找到了两条记录的总数。谢谢

【问题讨论】:

  • 无论 DEPS 金额是多少,您都想删除重复的帐号?或删除重复的帐号和 DEPS ??
  • 帐号和 DEPS 重复,但 tot_deps 不重复

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


【解决方案1】:

你只需要一个聚合:

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

【讨论】:

  • 要么做 sum(deps) 要么将其添加到 group by :)
  • @Al-3sli 。 . . OP希望按帐户计算总和。 deps 字段不应该存在。
  • 感谢 Gordon,我创建了另一个类似的表并添加了上述聚合,它工作正常。比我想象的要容易。
【解决方案2】:

用它来删除重复记录:

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

【讨论】:

  • 只是为了让您知道我已经设法使用 sql 和 excel 检索所需的结果。另一方面,上述查询对我来说并不清楚,我不明白背后的逻辑。如果你有时间,请你点亮一些灯。无论如何,我非常感谢您的及时和有用的回复。谢谢
  • 很高兴您找到了您所寻找的,这是用于从您的表中删除重复行(account_number, deps)的查询并仅保持唯一行。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 2021-02-05
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 2010-09-19
    • 2015-02-06
    • 2018-05-16
    相关资源
    最近更新 更多