从其他两个属性在Oracle数据库中创建新属性

时间:2018-10-26 06:53:47

标签: sql oracle column-alias

我有一个Classes表,如下所示:

Classes(classid, dept_code, course#, sect#, year, semester, limit, class_size, room, TA_B#)

问题是: 查找提供的每个本科课程的班级编号,部门代码和课程编号(即课程编号<500) 2017年春季。对于每个此类课程,还列出可用的座位数(按限额计算-class_size) 在“ seats_available”标题下。

我尝试了这种简单的方法:

select classes.classid, classes.dept_code, classes.course#,
classes.limit-classes.class_size as'seats_available'
from classes
where limit>class_size and year='2017' and semester='Spring'and course# < 500;

0 但是我遇到一个错误:

ERROR at line 1:
ORA-00923: FROM keyword not found where expected

我想念什么?如果我删除以下代码行,就会发生此错误:classes.limit-classes.class_size as'seats_available'

我正在使用Oracle数据库

1 个答案:

答案 0 :(得分:1)

在SQL标准中,标识符需要用双引号(")引起来。而且Oracle数据库符合那里的标准。

单引号(')用于字符常量,例如就像您在semester='Spring'中所做的那样,它们不能不能用于列名,表名或列别名之类的标识符。

因此您需要使用:

classes.limit-classes.class_size as "seats_available"

您实际上并不需要双引号,因为您的标识符不包含任何无效字符,所以

classes.limit-classes.class_size as seats_available

将同样有效


不相关,但是:数字应该用单引号引起来2017是数字常数,'2017'是字符串常数。因此,您应该改用where year = 2017