Důležitá poznámka:Vytvořil bych zobrazení na základě vaší aktuální tabulky a vyhnuli jste se přidávání nových sloupců, protože by denormalizovaly vaše schéma. Další informace zde .
Také budu používat malá jména pro všechny identifikátory, abych se vyhnul qoutování.
- vytvořit
GPA_TXT
pole můžete použítto_char()
funkce:to_char(gpa, 'FM09.0')
(FM
předejde mezerám před výsledným řetězcem); -
pro druhé pole bych použil
GPA
a neGPA_TXT
pro číselné srovnání. Více se můžete podívat naCASE
vytvořit v dokumentech , ale blok může být následující: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
Omlouvám se, nevím, jak se přidělují známky podle GPA, prosím, upravte to podle toho.
Výsledný dotaz pro zobrazení může být (také na 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;
Chcete-li sestavit zobrazení, stačí přidat CREATE VIEW aview AS
před tímto dotazem.
UPRAVIT
Pokud stále chcete přidat sloupce, mělo by stačit následující:
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');