日期:2014-05-18  浏览次数:20536 次

表结构的转化
现有一个表:
表A
adress     pepole
宁波       张三(NB)
宁波       李四(NB)
宁波       王五(NB)
杭州       张三(HZ)
杭州       李四(HZ)
杭州       王五(HZ)
转化为表
表B
NBpepole   HZpepole
张三(NB)   张三(HZ)
李四(NB)   李四(HZ)
王五(NB)   王五(HZ)

请大人解答。

------解决方案--------------------
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)=

------解决方案--------------------
create table A(adress nvarchar(10),pepole nvarchar(10))
insert A select '宁波 ', '张三(NB) '
union all select '宁波 ', '李四(NB) '
union all select '宁波 ', '王五(NB) '
union all select '杭州 ', '张三(HZ) '
union all select '杭州 ', '李四(HZ) '
union all select '杭州 ', '王五(HZ) '

create table B(NBpepole nvarchar(10),HZpepole nvarchar(10))

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


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

select * from B
--result
NBpepole HZpepole
---------- ----------
张三(NB) 张三(HZ)
李四(NB) 李四(HZ)
王五(NB) 王五(HZ)

(3 row(s) affected)