--学号是连续的吗?如果是: select 学号1=a.学号,姓名1=a.姓名,地址1=a.地址 ,学号2=b.学号,姓名2=b.姓名,地址2=b.地址 from 表 a left join 表 b on a.学号+1=b.学号 and (a.学号-1)%2=0
--如果学号不连续,就用 select 学号1=a.学号,姓名1=a.姓名,地址1=a.地址 ,学号2=b.学号,姓名2=b.姓名,地址2=b.地址 from 表 a left join 表 b on (select count(*) from 表 where 学号<=a.学号)+1 =(select count(*) from 表 where 学号<=b.学号) where ((select count(*) from 表 where 学号<=a.学号)-1)%2=0
--测试--测试数据 create table 表(学号 int,姓名 varchar(10),地址 varchar(10)) insert 表 select 1,'N1','add1' union all select 2,'N2','add2' union all select 3,'N3','add3' union all select 4,'N4','add4' union all select 5,'N4','add5' union all select 6,'N6','add6' go--学号是连续的吗?如果是: select 学号1=a.学号,姓名1=a.姓名,地址1=a.地址 ,学号2=b.学号,姓名2=b.姓名,地址2=b.地址 from 表 a left join 表 b on a.学号+1=b.学号 and (a.学号-1)%2=0--如果学号不连续,就用 select 学号1=a.学号,姓名1=a.姓名,地址1=a.地址 ,学号2=b.学号,姓名2=b.姓名,地址2=b.地址 from 表 a left join 表 b on (select count(*) from 表 where 学号<=a.学号)+1 =(select count(*) from 表 where 学号<=b.学号) where ((select count(*) from 表 where 学号<=a.学号)-1)%2=0 go--删除测试 drop table 表/*--测试结果学号1 姓名1 地址1 学号2 姓名2 地址2 ----------- ---------- ---------- ----------- ---------- ---------- 1 N1 add1 2 N2 add2 3 N3 add3 4 N4 add4 5 N4 add5 6 N6 add6(所影响的行数为 3 行) 学号1 姓名1 地址1 学号2 姓名2 地址2 ----------- ---------- ---------- ----------- ---------- ---------- 1 N1 add1 2 N2 add2 3 N3 add3 4 N4 add4 5 N4 add5 6 N6 add6(所影响的行数为 3 行) --*/
select 学号1=a.学号,姓名1=a.姓名,地址1=a.地址
,学号2=b.学号,姓名2=b.姓名,地址2=b.地址
from 表 a
left join 表 b on a.学号+1=b.学号 and (a.学号-1)%2=0
select 学号1=a.学号,姓名1=a.姓名,地址1=a.地址
,学号2=b.学号,姓名2=b.姓名,地址2=b.地址
from 表 a left join 表 b on
(select count(*) from 表 where 学号<=a.学号)+1
=(select count(*) from 表 where 学号<=b.学号)
where ((select count(*) from 表 where 学号<=a.学号)-1)%2=0
create table 表(学号 int,姓名 varchar(10),地址 varchar(10))
insert 表 select 1,'N1','add1'
union all select 2,'N2','add2'
union all select 3,'N3','add3'
union all select 4,'N4','add4'
union all select 5,'N4','add5'
union all select 6,'N6','add6'
go--学号是连续的吗?如果是:
select 学号1=a.学号,姓名1=a.姓名,地址1=a.地址
,学号2=b.学号,姓名2=b.姓名,地址2=b.地址
from 表 a
left join 表 b on a.学号+1=b.学号 and (a.学号-1)%2=0--如果学号不连续,就用
select 学号1=a.学号,姓名1=a.姓名,地址1=a.地址
,学号2=b.学号,姓名2=b.姓名,地址2=b.地址
from 表 a left join 表 b on
(select count(*) from 表 where 学号<=a.学号)+1
=(select count(*) from 表 where 学号<=b.学号)
where ((select count(*) from 表 where 学号<=a.学号)-1)%2=0
go--删除测试
drop table 表/*--测试结果学号1 姓名1 地址1 学号2 姓名2 地址2
----------- ---------- ---------- ----------- ---------- ----------
1 N1 add1 2 N2 add2
3 N3 add3 4 N4 add4
5 N4 add5 6 N6 add6(所影响的行数为 3 行)
学号1 姓名1 地址1 学号2 姓名2 地址2
----------- ---------- ---------- ----------- ---------- ----------
1 N1 add1 2 N2 add2
3 N3 add3 4 N4 add4
5 N4 add5 6 N6 add6(所影响的行数为 3 行)
--*/