将第一条记录的单列与 SQL Server 中的重复记录合并

Posted

技术标签:

【中文标题】将第一条记录的单列与 SQL Server 中的重复记录合并【英文标题】:Merge single column of first record with respective to duplicate record in SQLServer 【发布时间】:2016-08-19 07:59:53 【问题描述】:

我在 sqlserver 中有这些数据

身份证电话 1 100 1 200 2 300 2 300 3 400 3 500 3 600

我想要这样的输出

身份证电话 1 100,200 1 200 2 300 2 300 3 400,500,600 3 500 3 600

【问题讨论】:

如果将 1,100 和 3,500 添加到表中,预期的结果是什么? 我没有得到..?我想保留表中的数据,只需要更新或添加具有预期输出的新列。表示不应添加重复项。 我认为他只是想要表格原样,但在每个ID 的第一次出现时,为该ID 选择所有不同的Phone 是的,需要合并所有唯一的电话号码。进入特定键的单列 但规则取决于您如何处理我建议您添加的行! 【参考方案1】:
;with cte
as
(select id,phone,
stuff((select  distinct','+cast(phone as varchar(20))
from #valuee t2 where t1.id=t2.id
for xml path('')),1,1,'') as nwphone
from #valuee t1
)
select id,
case when 1=dense_rank() over (partition by id,nwphone order by phone) 
then cast(nwphone as varchar(20)) else cast(phone as varchar(20)) end as phone
from
cte

输出:

id  phone
1   100,200
1   200
2   300
2   300
3   400,500,600
3   500
3   600

【讨论】:

以上是关于将第一条记录的单列与 SQL Server 中的重复记录合并的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 中第一条记录结束日期和下一条记录开始日期之间的重叠

如何用SQL SERVER取分组数据第一条

将 Access 表导入 Excel 表,而不将第一条记录作为 Access 字段标签

SQL Server - 读取第一行并删除

如何将第一条指令插入llvm中的空基本块

从 SQL Server 中的每个表中只复制一条记录