Nota importante:crearía una vista basado en su tabla actual y evitó agregar nuevas columnas, ya que desnormalizarán su esquema. Lea más aquí .
Además, usaré nombres en minúsculas para todos los identificadores para evitar que salgan en comillas.
- para formar
GPA_TXT
campo puede usarto_char()
función:to_char(gpa, 'FM09.0')
(laFM
evitará el espacio delante de la cadena resultante); -
para el segundo campo, usaría
GPA
y noGPA_TXT
para la comparación numérica. Puede consultar más enCASE
construye en los documentos , pero el bloque podría ser el siguiente: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
Lo siento, no sé cómo se asignan las calificaciones por GPA, por favor, ajústelo en consecuencia.
La consulta resultante para la vista podría ser (también en 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;
Para crear una vista, simplemente anteponga CREATE VIEW aview AS
antes de esta consulta.
EDITAR
Si aún opta por agregar columnas, lo siguiente debería funcionar:
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');