【问题标题】:SQL Group by but record relationshipSQL Group by 但记录关系
【发布时间】:2021-01-13 12:05:14
【问题描述】:

这是我的问题:

我希望对以下数据进行重复数据删除和一般清理,这些字段是:

  • 唯一 ID
  • 姓名
  • 电话号码
  • 电子邮件

RDBMS 是 Azure SQL

我想要做的是对姓名、电话号码和电子邮件进行分组,然后将 UniqueID 记录在单独的列中,例如:

NewUniqueID Name PhoneNumber Email OldIDs
1 Sam Smith 091234567 sam.smith@test.com 12,54,65,70

但是,我不确定创建 OldIDs 字段的正确术语是什么,所以我一直无法找到如何去做。

【问题讨论】:

  • 编辑您的问题并显示示例数据。如何识别应该组合在一起的行?

标签: sql string group-by azure-sql-database window-functions


【解决方案1】:

似乎想要字符串聚合:

select 
    row_number() over(order by (select null)) newUniqueID,
    name,
    phoneNumber,
    email,
    string_agg(uniqueID, ',') oldIDs
from mytable
group by name, phoneNumber, email

这会为每个(name, phoneNumber, email) 元组生成一行,并连接oldIDs 列中的所有uniqueIDs。 row_number() 为结果集中的每一行分配一个新的 id

【讨论】:

  • 完美!你为我省去了很多痛苦和痛苦!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-20
  • 2012-05-13
  • 2016-05-15
  • 2018-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多