重要な注意:ビュー
を作成します 現在のテーブルに基づいており、スキーマを非正規化するため、新しい列の追加は避けました。続きを読む
また、qoutingを避けるために、すべての識別子に小文字の名前を使用します。
-
GPA_TXT
を作成するにはto_char()
を使用できるフィールド 関数:to_char(gpa, 'FM09.0')
(FM
結果の文字列の前のスペースを避けます); -
2番目のフィールドには、
GPA
を使用しますGPA_TXT
ではありません 数値比較用。CASE
で詳細を確認できます ドキュメント で構成します 、ただし、ブロックは次のようになります: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
申し訳ありませんが、GPAごとに成績がどのように割り当てられているかわかりません。それに応じて調整してください。
ビューの結果のクエリは次のようになります( SQLFiddle にもあります ):
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;
ビューを作成するには、CREATE VIEW aview AS
を前に付けるだけです。 このクエリの前。
編集
それでも列を追加する場合は、次の方法でうまくいくはずです。
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');