Создание нового атрибута в базе данных Oracle из двух других атрибутов
У меня есть таблица классов, которая выглядит следующим образом:
Classes(classid, dept_code, course#, sect#, year, semester, limit, class_size, room, TA_B#)
Задача: Найти classid, dept_code и № курса каждого класса бакалавриата (т. Е. Курс №< 500), который был предложен весной 2017 года. Для каждого такого класса также перечислите количество доступных мест (рассчитывается по лимиту - class_size) под заголовком "seat_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 ответ
В стандарте SQL идентификаторы должны быть заключены в двойные кавычки ("
). И база данных Oracle соответствует стандарту там.
Одинарные кавычки ('
) для символьных констант, например, как вы сделали в semester='Spring'
их нельзя использовать для идентификаторов, таких как имена столбцов, имена таблиц или псевдонимы столбцов.
Так что вам нужно использовать:
classes.limit-classes.class_size как "seat_available"
Вам на самом деле не нужны двойные кавычки, так как ваш идентификатор не содержит недопустимых символов, поэтому
classes.limit-classes.class_size as seats_available
будет работать так же хорошо
Не связано, но: числа не должны быть заключены в одинарные кавычки 2017
числовая константа, '2017'
строковая константа Так что вы должны использовать where year = 2017
вместо