日期:2014-05-18 浏览次数:20674 次
create table a
(id varchar(5), ps int)
create table b
(id varchar(5), ps1 int)
create table c
(id varchar(5), ps2 int)
insert a
select '01', 12
union all select '02', 9
union all select '03', 7
insert b
select '04', 2
union all select '08', 19
union all select '07', 3
insert c
select '11', 0
union all select '02', 4
union all select '13', 5
Alter table a add rowid int identity(1,1)
Alter table b add rowid int identity(1,1)
Alter table c add rowid int identity(1,1)
select a.id, a.ps, b.id, b.ps1, c.id, c.ps2
from a JOIN b ON a.rowid = b.rowid
JOIN c ON a.rowid = c.rowid
Alter table a drop column rowid Alter table a drop column rowid Alter table a drop column rowid drop table a drop table b drop table c
------解决方案--------------------
不好意思,刚才没有看清楚,我得出来的结果跟楼主想要的好象有点出入。。。
因为楼主没有id列。所以需要加个id列来区分。。
我重新改了下
create table a(id varchar(10),ps int)
insert into a select '01',12
insert into a select '02',9
insert into a select '03',7
create table b(id varchar(10),ps1 int)
insert into b select '04',2
insert into b select '08',19
insert into b select '07',3
create table c(id varchar(10),ps2 int)
insert into c select '11',0
insert into c select '02',4
insert into c select '13',5
select pk=identity(int,1,1),id ,ps into a1 from a
select pk1=identity(int,1,1),id ,ps1 into b1 from b
select pk2=identity(int,1,1),id ,ps2 into c1 from c
select id,ps,id1[ ],ps1 [ ],id2 [ ],ps2[ ] from
(select id,ps,bh=(select count(1) from a1 where pk<o.pk)+1 from a1 o)k,
(select id [id1],ps1,bh1=(select count(1) from b1 where pk1<m.pk1)+1 from b1 m)l,
(select id [id2],ps2,bh2=(select count(1) from c1 where pk2<n.pk2)+1 from c1 n)p
where bh=bh1 and bh1=bh2