一个困惑了我很久的sql查询语句,请大家帮忙,感恩不敬!

来源:百度知道 编辑:UC知道 时间:2024/05/10 23:12:24
我有两个表
<表student>
sno name
1 张三
2 李四
3 王五

<选课表 cours>
sno course
1 美术
1 音乐
1 体育
2 语文
2 数学

如何使用SQL语句使查询结果变成这样
Sno Name course
1 张三 美术
音乐
体育
2 李四 语文
数学
3 王五 null

注:我们通常用表连接出来的结果是这样:
Sno Name course
1 张三 美术
1 张三 音乐
1 张三 体育
2 李四 语文
2 李四 数学
3 王五 null

但这样看起来很麻烦,不是我想要的结果.请大家帮忙.

declare @student table(sno varchar(10), name varchar(10))
insert into @student select 1, '张三'
insert into @student select 2, '李四'
insert into @student select 3, '王五'

declare @cours table(sno varchar(10), course varchar(10))
insert into @cours select 1, '美术'
insert into @cours select 1, '音乐'
insert into @cours select 1, '体育'
insert into @cours select 2, '语文'
insert into @cours select 2, '数学'

select a.sno, a.name, b.course
into #
from @student a, @cours b
where a.sno=b.sno

select
sno = case when course = (select top 1 course from # where sno = x.sno order by course)
then cast(sno as varchar(10)) else '' end,
name = case when course = (select top 1 course from # where name = x.name order by course)
then cast(name as varchar(10)) else '' end,
course
from # as x
order by sno*1,cours