Wichtiger Hinweis:Ich würde eine Ansicht erstellen basierend auf Ihrer aktuellen Tabelle und vermeiden Sie das Hinzufügen neuer Spalten, da diese Ihr Schema denormalisieren würden. Lesen Sie mehr hier .
Außerdem werde ich Kleinbuchstaben für alle Bezeichner verwenden, um Anführungszeichen zu vermeiden.
- um
GPA_TXTzu bilden Feld können Sieto_char()verwenden Funktion:to_char(gpa, 'FM09.0')(dieFMvermeidet Leerzeichen vor dem resultierenden String); -
Für das zweite Feld würde ich
GPAverwenden und nichtGPA_TXTzum Zahlenvergleich. Weitere Informationen finden Sie unterCASEKonstrukt in den Dokumenten , aber der Block könnte der folgende sein: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
Tut mir leid, ich weiß nicht, wie Noten pro GPA vergeben werden, bitte passen Sie sie entsprechend an.
Die resultierende Abfrage für die Ansicht könnte (auch auf SQL Fiddle ) lauten ):
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;
Um eine Ansicht zu erstellen, stellen Sie einfach CREATE VIEW aview AS voran vor dieser Abfrage.
BEARBEITEN
Wenn Sie immer noch Spalten hinzufügen möchten, sollte Folgendes ausreichen:
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');