我是生手,写出给sql语句,记住要能实现我才给分。以下是三个表,表1:学生信息表,表2:课程表,表3:成绩表,查出来要像excel那样:
学号, 姓名,语文,数学,英语
200601 张三 114 120 124
表1:
sno sname
200601 张三
表2:cno cname
1 语文
2 数学表3 sno cno grade
200601 1 114
200601 2 120
要求查出以下内容:
sno sname 1 2
200601 张三 114 120
学号, 姓名,语文,数学,英语
200601 张三 114 120 124
表1:
sno sname
200601 张三
表2:cno cname
1 语文
2 数学表3 sno cno grade
200601 1 114
200601 2 120
要求查出以下内容:
sno sname 1 2
200601 张三 114 120
解决方案 »
- 如何自动选中树节点?
- mysql 有没有一行命令可以删除mytable表中的记录,并且保留表结构。
- Delphi7下面怎么使用Windows 的WMI接口啊?
- ##关于局域网内文件修改## 问题解决另开帖送分
- ******????求救,delphi调用存储过程出错??在线等待中¥¥¥¥¥¥
- ???com组件问题-在线等
- 为什么在安装delphi7时老是报1309错误然后只有退出安装
- 如何在Panel中显示菜单的提示
- 有哪位高手知道哪里可以找到WMA的文件格式!只需要读取各个版本的WMA的信息就可以了!
- 请问 :多层 TRzImageComboBox 如何获得当前选中层上一层的文本
- 请教Delphi高手:关于Delphi网络底层
- messagebox的默认值怎么改?
动态的(例如你这种)可能还多需要一个字符串拼凑^_^
drop table t1
gocreate table t1
(sno varchar(10),
sname varchar(10)
)if exists(select 1 from sysobjects where id = object_id(N't2'))
drop table t2
go
create table t2
(cno varchar(10),
cname varchar(10)
)
if exists(select 1 from sysobjects where id = object_id(N't3'))
drop table t3
go
create table t3
(sno varchar(10),
cno varchar(10),
grade int
)insert into t1 values('200601','张三')
insert into t2 values('1','语文')
insert into t2 values('2','数学')
insert into t3 values('200601','1',100)
insert into t3 values('200601','2',80)
go--执行查询
declare @sql varchar(2000)set @sql = 'select t1.sno,t1.sname '
select @SQl = @sql + ',sum(case t3.cno when '+ t2.cno + ' then t3.grade else 0 end) ' + t2.cname
from t2set @Sql = @sql + ' from t1, t3 where t1.sno = t3.sno group by t1.sno,t1.sname '
exec( @sql)
access用case不行的好象
access的实现俺木有搞过,写不到。
if exists(select 1 from sysobjects where id = object_id(N't1'))
drop table t1
gocreate table t1
(sno varchar(10),
sname varchar(10)
)if exists(select 1 from sysobjects where id = object_id(N't2'))
drop table t2
go
create table t2
(cno varchar(10),
cname varchar(10)
)
if exists(select 1 from sysobjects where id = object_id(N't3'))
drop table t3
go
create table t3
(sno varchar(10),
cno varchar(10),
grade int
)insert into t1 values('200601','张三')
insert into t1 values('200602','李四')
insert into t2 values('1','语文')
insert into t2 values('2','数学')
insert into t2 values('3','英语')
insert into t3 values('200601','1',100)
insert into t3 values('200601','2',80)
insert into t3 values('200601','3',120)
insert into t3 values('200601','1',111)
insert into t3 values('200601','2',90)
insert into t3 values('200601','3',124)
go--执行查询
declare @sql varchar(2000)set @sql = 'select t1.sno,t1.sname '
select @SQl = @sql + ',sum(case t3.cno when '+ t2.cno + ' then t3.grade else 0 end) ' + t2.cname
from t2set @Sql = @sql + ' from t1, t3 where t1.sno = t3.sno group by t1.sno,t1.sname '
exec( @sql)
得到如下sno sname 语文 数学 英语
200601 张三 211 170 244
可我要的应是:
sno sname 语文 数学 英语
200601 张三 100 80 120
200602 李四 111 90 124