Важна забележка:бих създал изглед въз основа на текущата ви таблица и избягвайте добавянето на нови колони, тъй като те ще денормализират вашата схема. Прочетете повече тук .
Освен това ще използвам имена с малки букви за всички идентификатори, за да избегна qouting.
- за формиране на
GPA_TXT
поле можете да използватеto_char()
функция:to_char(gpa, 'FM09.0')
(FM
ще избегне интервал пред резултантния низ); -
за второто поле бих използвал
GPA
а неGPA_TXT
за цифрово сравнение. Можете да проверите повече наCASE
конструкция в документите , но блокът може да е следният:CASE WHEN gpa >= 3.3 THEN 'A' WHEN gpa > 2.7 AND gpa < 3.3 THEN 'B' WHEN gpa > 0 THEN 'C' ELSE 'F' END
Съжалявам, не знам как се дават оценки за GPA, моля, коригирайте съответно.
Получената заявка за изгледа може да бъде (също на SQL Fiddle ):
SELECT name,major,gpa,
to_char(gpa, 'FM09.0') AS gpa_txt,
name||'-'||major||'-Grade'||
CASE WHEN gpa >= 3.3 THEN 'A'
WHEN gpa > 2.7 AND gpa < 3.3 THEN 'B'
WHEN gpa > 0 THEN 'C'
ELSE 'F' END || '-' || to_char(gpa, 'FM09.0') AS adesc
FROM atab;
За да създадете изглед, просто добавете CREATE VIEW aview AS
преди тази заявка.
РЕДАКТИРАНЕ
Ако все пак искате да добавите колони, следното трябва да свърши работа:
ALTER TABLE atab ADD gpa_txt text, ADD adesc text;
UPDATE atab SET
gpa_txt = to_char(gpa, 'FM09.0'),
adesc = name||'-'||major||'-Grade'||
CASE WHEN gpa >= 3.3 THEN 'A'
WHEN gpa > 2.7 AND gpa < 3.3 THEN 'B'
WHEN gpa > 0 THEN 'C'
ELSE 'F' END || '-' || to_char(gpa, 'FM09.0');