महत्वपूर्ण नोट:मैं एक view बनाउंगा। आपकी वर्तमान तालिका के आधार पर और नए कॉलम जोड़ने से बचें, क्योंकि वे आपकी स्कीमा को असामान्य कर देंगे। अधिक पढ़ें यहां ।
साथ ही, मैं qouting से बचने के लिए सभी पहचानकर्ताओं के लिए लोअरकेस नामों का उपयोग करूंगा।
GPA_TXTबनाने के लिए फ़ील्ड आप उपयोग कर सकते हैंto_char()समारोह:to_char(gpa, 'FM09.0')(FMपरिणामी स्ट्रिंग के सामने जगह से बचना होगा);-
दूसरे क्षेत्र के लिए, मैं
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 में ग्रेड कैसे निर्धारित किए जाते हैं, कृपया तदनुसार समायोजित करें।
दृश्य के लिए परिणामी क्वेरी हो सकती है (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;
एक दृश्य बनाने के लिए बस पहले से जोड़ें 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');