首页 > 解决方案 > 从其他两个属性在 Oracle 数据库中创建一个新属性

问题描述

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

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

问题是:查找 2017 年春季提供的每个本科班的 classid、dept_code 和 course#(即 course# < 500)。对于每个这样的班级,还列出可用的座位数(由 limit - 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 数据库

标签: sqloraclecolumn-alias

解决方案


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

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

所以你需要使用:

classes.limit-classes.class_size 为“seats_available”

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

classes.limit-classes.class_size as seats_available

也能正常工作


不相关,但是:数字应该用单引号括起来2017是数字常量,'2017'是字符串常量。所以你应该where year = 2017 改用


推荐阅读