首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

表的合并,两个表合并入第三个表,该如何解决

2012-03-07 
表的合并,两个表合并入第三个表表A:adresspepole宁波张三(NB)宁波李四(NB)宁波王五(NB)杭州张三(HZ)杭州李

表的合并,两个表合并入第三个表
表A:
adress     pepole
宁波       张三(NB)
宁波       李四(NB)
宁波       王五(NB)
杭州       张三(HZ)
杭州       李四(HZ)
杭州       王五(HZ)
转化为表
表B:
NBpepole   HZpepole
张三(NB)   张三(HZ)
李四(NB)   李四(HZ)
王五(NB)   王五(HZ)

现在的思想是,根据address建立2个临时表
临时表1:
NBpepole
张三(NB)  
李四(NB)  
王五(NB)

临时表2:
HZpepole
张三(HZ)
李四(HZ)
王五(HZ)

然后建立表B
create   table   B(NBpepole   int,HZpepole   int)
插入数据
insert   into   B(NBpepole,HZpepole)   select   NBpepole   from   临时表1,select   HZpepole   from   临时表2
但是最后一句是错误的,请达人解答。




[解决办法]
insert into B(NBpepole,HZpepole)
select * from temp1,temp2 where left(HZpepole,2)=left(NBpepole2)
是不是名字一样呢
[解决办法]
这样就可以了呀

select NBpepole=nb.pepole, HZpepole=hz.pepole into B from
(select pepole from a where adress= '宁波 ') nb,
(select pepole from a where adress= '杭州 ') hz
where left(nb.pepole,charindex( '( ',nb.pepole)-1)=left(hz.pepole,charindex( '( ',hz.pepole)-1)
[解决办法]
--try

create table T(adress nvarchar(10),pepole nvarchar(10))
insert T select '宁波 ', '张三(NB) '
union all select '宁波 ', '李四(NB) '
union all select '宁波 ', '王五(NB) '
union all select '杭州 ', '张三(HZ) '
union all select '杭州 ', '李四(HZ) '
union all select '杭州 ', '王五(HZ) '

select ID=identity(int,1,1),* into #T1 from T where adress= '宁波 '
select ID=identity(int,1,1),* into #T2 from T where adress= '杭州 '

insert B(NBpepole,HZpepole)
select #T1.pepole,#T2.pepole
from #T1
full join #T2 on #T1.ID=#T2.ID

热点排行