日期:2014-05-17  浏览次数:20576 次

如何提取客户表中联系人及电话?
表1:
维修卡号  用户名称   地址     联系人1    电话1      联系人2        电话2
------  -------  -----   -----     ----      ------        ----
B10001   客户1    地址1    张三    1234567893    李四       07572237654
B10002   客户1    地址1    王生     1672367892    李四       1897726543
B10003   客户1    地址1    张三     1389435531    王生       07575467533
B10004   客户2    地址2    曾小姐   1392234521    黄蜂       02033435234
B10005   客户2    地址2    张勇     1899567894    曾小姐     07573898664
B10006   客户3    地址3    何洁     1375567895    李四       1379908878
...
表2:
联系人ID  客户名称  联系人名称  电话1  电话2  电话3
------   ------  --------  -----  ----  ----

我需要把表1中联系人的信息提取导入到表2中,如何编写SQL语句?其中同一个客户有多个联系人,而同一个联系人
也拥有多个联系电话,如何把他们汇总到表2中?请高人指点。

------解决方案--------------------
如楼主所说,添加到表2的电话可能不止一个,或许是两个,也可能是七八个,但看表2的结构只给了3个备用的联系电话字段,那么多余的怎么处理,建议是将多个联系人加标识用特殊符号分开,电话对应同样处理,例如:

联系人              电话
张三(1),李四(2)    1234567893(1),1234567895(1),1379908878(2)

不知这样可以实现楼主的信息统计没。
------解决方案--------------------
提供一个思路,比较麻烦些,但应该能解决问题,看这样行不?

先建立临时表,按不同客户联系人生成一个有序的电话号码序列,为避免丢失,甚至可以预留10列或更多电话号码
比如临时表#TEMP,字段如下:序号(按照用户名称、联系人生成的从1到n的序号),用户名称,联系人,联系电话。
如下操作看看
(表2的联系人ID采用自动编号即可)
--插入第一个联系电话
insert into [表2](客户名称,  联系人名称,  电话1)
select 用户名称, 联系人, 联系电话
from #TEMP
where 序号=1

--更新第二个联系电话
update [表2]
set 电话2=联系电话
from #TEMP
where [表2].用户名称=#TEMP.用户名称 and [表2].联系人= #TEMP.联系人
   and 序号=2

--更新第三个联系电话
update [表2]
set 电话3=联系电话
from #TEMP
where [表2].用户名称=#TEMP.用户名称 and [表2].联系人= #TEMP.联系人
   and 序号=3
   ...