sql - SQL Group by 但记录关系
问题描述
这是我的问题:
我有以下数据,我希望对其进行重复数据删除和一般清理,这些字段是:
- 唯一身份
- 姓名
- 电话号码
- 电子邮件
RDBMS 是 Azure SQL
我想要做的是对姓名、电话号码和电子邮件进行分组,然后将 UniqueID 记录在单独的列中,例如:
NewUniqueID Name PhoneNumber Email OldIDs
1 Sam Smith 091234567 sam.smith@test.com 12,54,65,70
但是,我不确定创建 OldIDs 字段的正确术语是什么,所以我一直无法找到如何去做。
解决方案
您似乎想要字符串聚合:
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)
,并连接uniqueID
column 中的所有 s oldIDs
。为结果集中的每一行row_number()
分配一个新的。id
推荐阅读
- excel - 当我在工作簿中添加此代码时收到错误
- java - 我如何告诉 maven 我希望编译后的代码去哪里?
- python - 如何在不使用 reverse() 且不使用 return 的情况下反转列表
- php - 我想将过滤后的数据从数据库发送到我的邮件
- azure-devops - 如何使用 powershell 命令创建名称和机密作为输入参数的 Azure AD B2C 身份体验框架策略密钥
- flutter - 如何使用 Flutter 向 googleSignIn 添加范围
- excel - 在单元格中包含一个字符串
- python - 将深度学习模型中的权重从 hdf5 更改为 tf
- rust - 如何在rust的两个文件(包括main)中包含一个文件并在两个文件中直接使用其命名空间名称?
- java - 当我尝试发送文件名时出现“java.net.SocketException broken pipe”错误。请提供解决方案