Решение Oracle (которое не будет работать на других диалектах SQL, потому что оно использует проприетарную функцию Oracle) заключается в использовании decode()
.Эта функция сравнивает первый аргумент со вторым, четвертым, шестым и т. Д., И когда она находит совпадение, она возвращает аргумент, следующий сразу за совпадением.Если совпадений не найдено, возвращается значение по умолчанию, введенное в качестве последнего аргумента.
select student_id, letter_grade,
decode(letter_grade, 'A', 10, 'B', 8, 'C', 6, 'D', 4, 0) as numeric_grade
from students