DERIVEDTBL关键字的作用?

treeforest 2003-10-17 11:30:05
我在分组中遇到一个问题:
我有两个表格,一个学生student(sno,sname,sex,sage),一个选课表sc(sno,cno,grade),其中,sno为学号,cno为课程号,grade为成绩。下面我要查询女生的平均成绩,所用语句为:
SELECT AVG(Grade) AS Girl_Grade FROM
(SELECT Student.Sno, Sname, Cno, Grade, sex
FROM Student, SC
WHERE (Student.Sno = sc.Sno)) GROUP BY Sex
HAVING (sex = '女')

这条语句不对,提示group 附近有语法错误,但是如果这样加入DERIVEDTBL 就可以了,
SELECT AVG(Grade) AS Girl_Grade FROM
(SELECT Student.Sno, Sname, Cno, Grade, sex
FROM Student, SC
WHERE (Student.Sno = sc.Sno)) DERIVEDTBL GROUP BY Sex
HAVING (sex = '女')

请问DERIVEDTBL关键字的作用?

第二个问题:
SELECT AVG(Grade) AS Girl_Grade FROM
(SELECT Student.Sno, Sname, Cno, Grade, sex
FROM Student, SC
WHERE ((Student.Sno = sc.Sno) and sex = '女') )
这个语句不对,提示最后一个括号附近有错误,这是为什么?

谢谢!!
...全文
299 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yujohny 2003-10-17
  • 打赏
  • 举报
回复
一、为子查询加个别名就可以了
SELECT AVG(Grade) AS Girl_Grade FROM
(SELECT Student.Sno, Sname, Cno, Grade, sex
FROM Student, SC
WHERE (Student.Sno = sc.Sno)) A GROUP BY Sex
HAVING (sex = '女')
txlicenhe 2003-10-17
  • 打赏
  • 举报
回复
1:是关键字吗?只是一个别名吧?
(SELECT Student.Sno, Sname, Cno, Grade, sex
FROM Student, SC
WHERE (Student.Sno = sc.Sno)) 的一个别名
2:
SELECT AVG(Grade) AS Girl_Grade FROM
(SELECT Student.Sno, Sname, Cno, Grade, sex
FROM Student, SC
WHERE ((Student.Sno = sc.Sno) and sex = '女') ) temp
要在最后给这个查询语句 (SELECT Student.Sno, Sname, Cno, Grade, sex
FROM Student, SC
WHERE ((Student.Sno = sc.Sno) and sex = '女') )
加一个别名

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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