sql 两行数据合并成一行显示

tyhAaron 2010-09-25 05:30:33
CREATE TABLE [dbo].[学生](
[学生ID] [int] NULL,
[姓名] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
INSERT INTO [test].[dbo].[学生]
([学生ID]
,[姓名])
VALUES
(<学生ID, int,>
,<姓名, varchar(20),>)
---------------学生表--------------------------
学生ID 姓名
1 张三
2 李四
3 王五
4 赵六

--------------我想查询出的结果是-----------------
学生ID 姓名 学生ID 姓名
1 张三 2 李四
3 王五 4 赵六

我想用sql语句实现但是弄了一下午还没有弄出来,请高手们来帮帮忙。
...全文
614 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
poorqin 2011-05-26
  • 打赏
  • 举报
回复
都好强,膜拜。。。
luxi0194 2010-09-27
  • 打赏
  • 举报
回复
呵呵,学习了。。。
「已注销」 2010-09-25
  • 打赏
  • 举报
回复
SELECT M.a a,M.b b,N.a c,N.b d
FROM(
select a,b ,ROW_NUMBER()OVER(ORDER BY GETDATE()) ROW from #T1 t1)M
INNER JOIN
(select a,b ,ROW_NUMBER()OVER(ORDER BY GETDATE()) ROW from #T1 t1)N
ON M.ROW+1=N.ROW
WHERE m.row % 2=1 AND n.row %2=0

a b c d
----------- ---- ----------- ----
1 张三 2 李四
3 王五 4 赵六

(2 row(s) affected)
NO66781 2010-09-25
  • 打赏
  • 举报
回复

DECLARE @t TABLE (id int,xm char(20))
INSERT @t SELECT 1,'张三'
UNION ALL SELECT 2,'李四'
UNION ALL SELECT 3,'王五'
UNION ALL SELECT 4,'赵六'

SELECT a.id,a.xm,
(SELECT id FROM @t WHERE id = a.id + 1 ) AS id,
(SELECT xm FROM @t WHERE id = a.id + 1 ) AS xm
FROM @t a
WHERE a.id %2 <>0
(4 行受影响)
id xm id xm
----------- -------------------- ----------- --------------------
1 张三 2 李四
3 王五 4 赵六

(2 行受影响)
dawugui 2010-09-25
  • 打赏
  • 举报
回复
--sql 2000
select
max(case (px - 1)%2 when 0 then 学生ID end) 学生ID,
max(case (px - 1)%2 when 0 then 姓名 end) 姓名,
max(case (px - 1)%2 when 1 then 学生ID end) 学生ID,
max(case (px - 1)%2 when 1 then 姓名 end) 姓名
from
(
select t.* , px = (select count(1) from 学生 where 学生ID < t.学生ID) + 1 from 学生 t
) m
group by (px - 1)/2


--sql 2005
select
max(case (px - 1)%2 when 0 then 学生ID end) 学生ID,
max(case (px - 1)%2 when 0 then 姓名 end) 姓名,
max(case (px - 1)%2 when 1 then 学生ID end) 学生ID,
max(case (px - 1)%2 when 1 then 姓名 end) 姓名
from
(
select t.* , px = row_nubmer() over(order by 学生ID) from 学生 t
) m
group by (px - 1)/2
tyhAaron 2010-09-25
  • 打赏
  • 举报
回复
高手们啊....
bancxc 2010-09-25
  • 打赏
  • 举报
回复
 --> 测试数据: #T1
if object_id('tempdb.dbo.#T1') is not null drop table #T1
create table #T1 (a int,b varchar(4))
insert into #T1
select 1,'张三' union all
select 2,'李四' union all
select 3,'王五' union all
select 4,'赵六'

select *
from #T1 t1
join #T1 t2 on t1.a+2=t2.a

a b a b
----------- ---- ----------- ----
1 张三 3 王五
2 李四 4 赵六

(2 行受影响)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧