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_TXT
zu bilden Feld können Sieto_char()
verwenden Funktion:to_char(gpa, 'FM09.0')
(dieFM
vermeidet Leerzeichen vor dem resultierenden String); -
Für das zweite Feld würde ich
GPA
verwenden und nichtGPA_TXT
zum Zahlenvergleich. Weitere Informationen finden Sie unterCASE
Konstrukt 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');