表述可能不太清楚,以下面的两个表为例。
A表
姓名 电话
张三 5566742
李四 13088889999
赵五 13877776666
鬼子六 3322152
B表
石头 5566742
麻子 13088889999
赵五 13877776666
泡泡 13900002222
想达成的新的A表(首选在原表中改变,若不能,则生成新表)
张三+石头 5566742
李四+麻子 13088889999
赵五 13877776666
鬼子六 3322152
泡泡 13900002222
(说明:
1新表中的第1个和第2个电话,A表和B表都有,但名字不同,新表中用+连续A表和B表和名字。
2新表中的第3个电话,A表B表都有,且名字相同,新表中沿用以前的名字。
3新表中的第4个电话,仅只出现在A表,名字和电话就用A表中的。
4新表中的第5个电话,仅只出现在B表,名字和电话就用B表中的。
5+号,只是一个连接符号,若不可用,则用-或别的称号代替。谢谢!)
------解决方案--------------------
update a set 姓名=姓名+isnull(select ','+姓名 from B表 where 电话=a.电话 for xml path(''),'')
from A表 a
insert into A表
select * from B表 a where not exists(select 1 from A表 where 电话=a.电话)
------解决方案--------------------