将第一条记录的单列与 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 中第一条记录结束日期和下一条记录开始日期之间的重叠