Observação importante:eu criaria uma visualização com base em sua tabela atual e evite adicionar novas colunas, pois elas desnormalizarão seu esquema. Leia mais aqui .
Além disso, usarei nomes em minúsculas para todos os identificadores para evitar qouting.
- para formar
GPA_TXT
campo você pode usarto_char()
função:to_char(gpa, 'FM09.0')
(oFM
evitará espaço na frente da string resultante); -
para o segundo campo, eu usariaGPA
e nãoGPA_TXT
para comparação numérica. Você pode conferir mais emCASE
construa nos nos documentos , mas o bloco pode ser o seguinte:
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
Desculpe, não sei como as notas são atribuídas por GPA, por favor, ajuste de acordo.
A consulta resultante para a visualização pode ser (também em 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 construir uma visualização, basta acrescentar
CREATE VIEW aview AS
antes desta consulta. EDITAR
Se você ainda adicionar colunas, o seguinte deve 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');