create table 学生表(学号 int ,姓名 varchar(20))
insert into 学生表 values(1,'YOki')
insert into 学生表 values(2,'Tom')
go
create table 课程表(课程号 int ,课程名称 varchar(20))
insert into 课程表 values(1,'数学')
insert into 课程表 values(2,'英语')
insert into 课程表 values(3,'化学')
go
create table 成绩表(学号 int,课程号 int,分数 int)
insert into 成绩表 values(1,1,57)
insert into 成绩表 values(1,2,44)
insert into 成绩表 values(1,3,90)
insert into 成绩表 values(2,1,45)
insert into 成绩表 values(2,3,99)
insert into 成绩表 values(3,2,88)select (select 姓名 from 学生表 where 学号=a.学号) as 学生姓名,
(select 课程名称 from 课程表 where 课程号=a.课程号) as 课程名称,
分数
into #temp
from 成绩表 a declare @sql varchar(8000)
set @sql='select 学生姓名'
select @sql=@sql+',case 课程名称 when '''+课程名称+''' then 分数 else 0 end as '+课程名称
from (select distinct 课程名称 from #temp) as a
select @sql=@sql+' from #temp'
exec(@sql)
drop table #temp
insert into 学生表 values(1,'YOki')
insert into 学生表 values(2,'Tom')
go
create table 课程表(课程号 int ,课程名称 varchar(20))
insert into 课程表 values(1,'数学')
insert into 课程表 values(2,'英语')
insert into 课程表 values(3,'化学')
go
create table 成绩表(学号 int,课程号 int,分数 int)
insert into 成绩表 values(1,1,57)
insert into 成绩表 values(1,2,44)
insert into 成绩表 values(1,3,90)
insert into 成绩表 values(2,1,45)
insert into 成绩表 values(2,3,99)
insert into 成绩表 values(3,2,88)select (select 姓名 from 学生表 where 学号=a.学号) as 学生姓名,
(select 课程名称 from 课程表 where 课程号=a.课程号) as 课程名称,
分数
into #temp
from 成绩表 a declare @sql varchar(8000)
set @sql='select 学生姓名'
select @sql=@sql+',case 课程名称 when '''+课程名称+''' then 分数 else 0 end as '+课程名称
from (select distinct 课程名称 from #temp) as a
select @sql=@sql+' from #temp'
exec(@sql)
drop table #temp
set @sql='select 学生姓名'
select @sql=@sql+',case 课程名称 when '''+课程名称+''' then 分数 else null end as '+课程名称
from
(select distinct 课程名称
from
( select(select 姓名 from 学生表 where 学号=a.学号) as 学生姓名,
(select 课程名称 from 课程表 where 课程号=a.课程号) as 课程名称,
分数
from 成绩表 a
)b
)c
select @sql=@sql+' from
(select (select 姓名 from 学生表 where 学号=a.学号) as 学生姓名,
(select 课程名称 from 课程表 where 课程号=a.课程号) as 课程名称,
分数 from 成绩表 a )b'
exec(@sql)
insert into 学生表 values(1,'YOki')
insert into 学生表 values(2,'Tom')
go
create table 课程表(课程号 int ,课程名称 varchar(20))
insert into 课程表 values(1,'数学')
insert into 课程表 values(2,'英语')
insert into 课程表 values(3,'化学')
go
create table 成绩表(学号 int,课程号 int,分数 int)
insert into 成绩表 values(1,1,57)
insert into 成绩表 values(1,2,44)
insert into 成绩表 values(1,3,90)
insert into 成绩表 values(2,1,45)
insert into 成绩表 values(2,3,99)
select (select 姓名 from 学生表 where 学号=a.学号) as 学生姓名,
(select 课程名称 from 课程表 where 课程号=a.课程号) as 课程名称,
分数
into #temp
from 成绩表 a declare @sql varchar(8000)
set @sql='select 学生姓名'
select @sql=@sql+',case 课程名称 when '''+课程名称+''' then 分数 else 0 end as '+课程名称
from (select distinct 课程名称 from #temp) as a
select @sql=@sql+' from #temp'
exec(@sql)
drop table #temp
(select 课程名称 from 课程表 where 课程号=a.课程号) as 课程名称,
分数
into #temp
from 成绩表 a 这个是不是建立一个临时表呢??那个a怎么回事?
一看到@ 和 + '' 我都昏了~~~~~
你全部拷贝到查询分析器里运行一下就知道了
其实不难的,你可以参考一下联机帮助
你对sql不熟,先找本入门的书看看吧
是这样的,我去年的时候学习过foxpro,今年开始学习asp建设一个学生管理系统,用的是access数据库。所以我现在没有查询分析器,也没有联机帮助,但是我承认我对sql不熟(偶只有一个三角)。其实你给的答案也说明你对我的要求非常了解,知道我想要干什么,教教我吧?
课程表里的课程 500个
成绩表的记录 2000个现在我想把本班的学生全部成绩显示出来()按照这个格式。
就这点要求。sql=select 学生.姓名,课程.课程名称,成绩.分数 from 学生,课程,成绩 where 学生.班号=指定班号 and 学生.学号=成绩.学号 and 成绩.课程号=课程.课程号这个肯定达不到要求但是表达的意思我觉得很明确。格式:
课程1 课程2 课程3 课程4 ……(总数未知)学生一 A B学生二 C ?%#? D学生三 E F。
。
。
总数未知?%#?:(结果中没有该项内容)比如没有数据库的成绩信息。
(select 课程名称 from 课程表 where 课程号=a.课程号) as 课程名称,
分数
into #temp
from 成绩表 a declare @sql varchar(8000)
set @sql='select 学生姓名'
select @sql=@sql+',case 课程名称 when '''+课程名称+''' then 分数 else 0 end as '+课程名称
from (select distinct 课程名称 from #temp) as a
select @sql=@sql+' from #temp'
exec(@sql)
drop table #temp
-------------------- ----------- ----------- -----------
YOki 0 57 0
YOki 0 0 44
YOki 90 0 0
Tom 0 45 0
Tom 99 0 0
(select 课程名称 from 课程表 where 课程号=a.课程号) as 课程名称,
分数
into #temp
from 成绩表 a declare @sql varchar(8000)
set @sql='select 学生姓名'
select @sql=@sql+',sum(case 课程名称 when '''+课程名称+''' then 分数 else 0 end) as '+课程名称
from (select distinct 课程名称 from #temp) as a
select @sql=@sql+' from #temp group by 学生姓名'
exec(@sql)
drop table #temp结果:(所影响的行数为 5 行)学生姓名 化学 数学 英语
-------------------- ----------- ----------- -----------
Tom 99 45 0
YOki 90 57 44
学生信息:::jiben.xuehao,jiben.banhao,jiben.xingming
课程信息:::kecheng.ID,kecheng.kecheng
成绩表::::chengji.xuehao,chengji.ID,chengji.fenshusql="select jiben.xingming,kecheng.kecheng,chengji.fenshu from jiben,kecheng,chengji where jiben.banhao='"&banji&"' and jiben.xuehao=chengji.xuehao and chengji.ID=kecheng.ID order by xingming asc"
set rs=newconn.execute(sql)
if not rs.eof then<% do while not rs.eof%>
<%=rs("kecheng")%>的成绩单:<br>
<%=rs("xingming")%><%=rs("fenshu")%><br><br><br>
<% rs.movenext
loop
%>大哥你帮我写写这个??
(select 课程名称 from 课程表 where 课程号=a.课程号) as 课程名称,
select @sql=@sql+',sum(case 课程名称 when '''+课程名称+''' then 分数 else 0 end) as '+课程名称我不知道哪个是字段,哪个是别名,明白我的意思?
/asp/xsgl/quest4.asp, 第 43 行, 第 7 列
select (select xingming from jiben where xuehao=a.xuehao) as xingming,
------^
select (select xingming from jiben where xuehao=a.xuehao) as xingming,
(select kecheng from kecheng where ID=a.ID) as kecheng,
fenshu
into #temp
from chengji a declare @sql varchar(8000)
set @sql='select xingming'
select @sql=@sql+',sum(case kecheng when '''+kecheng+''' then fenshu else 0 end) as '+kecheng
from (select distinct kecheng from #temp) as a
select @sql=@sql+' from #temp group by xingming'
exec(@sql)
drop table #temp
/asp/xsgl/quest4.asp, 第 43 行, 第 7 列
select (select xingming from jiben where xuehao=a.xuehao) as xingming,
------------------------------------------------^
select (select xingming from jiben where xuehao=a.xuehao) as 学生姓名,
(select kecheng from kecheng where ID=a.ID) as 课程名称,
fenshu
into #temp
from chengji a declare @sql varchar(8000)
set @sql='select 学生姓名'
select @sql=@sql+',sum(case 课程名称 when '''+课程名称+''' then 分数 else 0 end) as '+课程名称
from (select distinct 课程名称 from #temp) as a
select @sql=@sql+' from #temp group by 学生姓名'
exec(@sql)
drop table #temp
yoki(小马哥) ::测试如下:Microsoft VBScript 编译器错误 (0x800A03FD)
/asp/xsgl/quest4.asp, 第 46 行, 第 7 列
select (select xingming from jiben where xuehao=a.xuehao) as 学生姓名,
-----------------------------------------------^