CASE
स्टेटमेंट, एक या उससे ज़्यादा शर्तों का आकलन करते हैं और पहली शर्त पूरी होने पर कोई नतीजा दिखाते हैं. अगर कोई भी शर्त पूरी नहीं होती, तो डिफ़ॉल्ट नतीजा दिखाते हैं.
ध्यान दें: CASE
स्टेटमेंट, दो तरह के होते हैं: शर्तों का आकलन करने वाला CASE
और आसान CASE
. शर्तों का आकलन करने वाले CASE
स्टेटमेंट की मदद से, बेहतर लॉजिक का इस्तेमाल किया जा सकता है. वहीं, आसान CASE
स्टेटमेंट ज़्यादा आसानी से बनाए जा सकते हैं.
यह भी देखें: IF.
इस्तेमाल के उदाहरण
CASE
स्टेटमेंट का सामान्य तौर पर इस्तेमाल, नई कैटगरी या डेटा ग्रुप बनाने के लिए किया जाता है. उदाहरण के लिए, चुने गए देश की वैल्यू को किसी 'बिक्री क्षेत्र' डाइमेंशन में शामिल करने के लिए, इस तरह से CASE
स्टेटमेंट बनाया जा सकता है:
CASE WHEN Country IN ("USA","Canada","Mexico") THEN "North America" WHEN Country IN ("England","France") THEN "Europe" ELSE "Other" END
सिंटैक्स
CASE WHEN condition THEN result [WHEN condition THEN result] [...] [ELSE else_result] END
पैरामीटर
-
condition
- यह लॉजिकल फ़ील्ड या एक्सप्रेशन होता है.WHEN
क्लॉज़,condition
का आकलन करते हैं. अगर तय की गई कोई शर्त पूरी होती है, तो नतीजे के तौर पर 'सही' मिलता है. वहीं, अगर शर्त पूरी नहीं होती है, तो नतीजे के तौर पर 'गलत' मिलता है. -
result
- यह किसी भी तरह का फ़ील्ड या एक्सप्रेशन होता है. हरWHEN
क्लॉज़ की शर्त में, मैच होने वालाTHEN
क्लॉज़ होना चाहिए, जिसकी वैल्यूWHEN condition
के सही होने पर नतीजे के रूप में दिखे. अगर कईWHEN
क्लॉज़ हैं, तोCASE
स्टेटमेंट, उसcondition
के आधार परresult
दिखाता है जो सबसे पहले सही मिलती है. else_result
(ज़रूरी नहीं) - यह किसी तरह का फ़ील्ड या एक्सप्रेशन होता है.ELSE
else_result
क्लॉज़,CASE
स्टेटमेंट के लिए डिफ़ॉल्ट नतीजे दिखाता है. इसमें तय की गई वैल्यू को नतीजे के तौर पर तब दिखाया जाता है, जब कोई भीWHEN
क्लॉज़ सही नहीं होता. अगर किसीCASE
स्टेटमेंट में, कोईELSE
क्लॉज़ नहीं है और कोईWHEN
क्लॉज़ भी सही नहीं है, तोCASE
स्टेटमेंटNULL
दिखाता है.
किसी CASE
स्टेटमेंट में सिर्फ़ एक ELSE
क्लॉज़ होता है.
ध्यान दें: किसी CASE
स्टेटमेंट में मौजूद सभी THEN
क्लॉज़ से मिलने वाला डेटा एक ही तरह का होना चाहिए. उदाहरण के लिए, अगर पहले THEN
क्लॉज़ में डेटा टाइप के तौर पर टेक्स्ट है, तो अन्य THEN
क्लॉज़ में भी डेटा टाइप के तौर पर टेक्स्ट होना चाहिए.
शर्तों का आकलन करने वाला CASE
स्टेटमेंट कैसे काम करता है
शर्तों का आकलन करने वाला CASE
स्टेटमेंट, CASE
कीवर्ड से शुरू होता है और END
कीवर्ड पर खत्म होता है. इन दोनों कीवर्ड के बीच, कई सेक्शन और क्लॉज़ बनाए जा सकते हैं:
WHEN
: इस क्लॉज़ में वह शर्त तय की जाती है जिसका आपको आकलन करना है. किसीCASE
स्टेटमेंट में, कईWHEN
क्लॉज़ शामिल किए जा सकते हैं.THEN
: इस क्लॉज़ में वह नतीजा सेट किया जाता है जिसेWHEN
क्लॉज़ के सही होने पर दिखना चाहिए. आपकेCASE
स्टेटमेंट में, हरWHEN
क्लॉज़ के लिए एकTHEN
क्लॉज़ होना चाहिए.ELSE:
इस क्लॉज़ का इस्तेमाल करना ज़रूरी नहीं है. अगरWHEN
क्लॉज़ की कोई भी शर्त सही नहीं होती है, तोCASE
स्टेटमेंट, नतीजे के तौर परELSE
क्लॉज़ की वैल्यू दिखाता है. वहीं, अगरELSE
क्लॉज़ को सेट नहीं किया जाता है, तो शर्तों के सही न होने के मामले में, नतीजे के तौर परNULL
दिखाया जाता है.
CASE
स्टेटमेंट सभी WHEN
क्लॉज़ का क्रम से आकलन करता है और जिस क्लॉज़ की शर्त सबसे पहले सही मिलती है उसके आधार पर नतीजा दिखाता है. इसके बाद, बाकी बचे हुए WHEN
क्लॉज़ और ELSE
क्लॉज़ का आकलन नहीं किया जाता. अगर WHEN
क्लॉज़ की सभी शर्तें गलत या NULL
होती हैं, तो CASE
स्टेटमेंट, नतीजे के तौर पर ELSE
क्लॉज़ की वैल्यू दिखाता है. वहीं, ELSE
क्लॉज़ के न होने पर, NULL
दिखाया जाता है.
उदाहरण
गड़बड़ी की जांच करना
CASE WHEN Medium != "cpc" THEN "free" ELSE "paid" END
न्यूमेरिक डाइमेंशन की वैल्यू को अलग-अलग बकेट में बांटना
उदाहरण के लिए, ऑर्डर की रकम के हिसाब से ऑर्डर को "Small", "Medium" या "Large" में बांटा जा सकता है:
CASE WHEN Amount < 20 THEN "Small" WHEN Amount >= 20 and Amount < 100 THEN "Medium" WHEN Amount >= 100 THEN "Large" END
लॉजिकल AND शर्त का आकलन करना
CASE WHEN Country ISO Code = "US" AND Medium = "cpc" THEN "US - Paid" ELSE "other" END
लॉजिकल AND/OR शर्त का आकलन करना
CASE WHEN REGEXP_MATCH(Video Title, ".*Google Analytics*") AND is_livestream = TRUE OR Video Length > 600 THEN "GA Livestream or long video" END
नतीजे के तौर पर, पैरामीटर की वैल्यू के हिसाब से कोई अन्य फ़ील्ड या अन्य वैल्यू दिखाना
पहला उदाहरण: इसमें चुनी गई पैरामीटर वैल्यू के लिए किसी डाइमेंशन को नतीजे के तौर पर दिखाया गया है. इस तकनीक की मदद से, उस ब्रेकडाउन डाइमेंशन को बदला जा सकता है जिसे उपयोगकर्ताओं के चार्ट में इस्तेमाल किया गया है.
CASE WHEN Breakdown = "Product Category" THEN Product Category WHEN Breakdown = "Store" THEN Store END
ध्यान दें कि इसे आसान CASE सिंटैक्स का इस्तेमाल करके भी लिखा जा सकता है:
CASE Breakdown WHEN "Product Category" THEN Product Category WHEN "Store" THEN Store END
उदाहरण 2: इसमें पैरामीटर वैल्यू के आधार पर एक अलग मेट्रिक को दिखाया गया है.
CASE WHEN Show Adjusted Cost = TRUE THEN Cost + Adjustments ELSE Cost END
नेस्ट किए गए CASE
स्टेटमेंट
ज़्यादा कॉम्प्लेक्स ब्रांचिंग लॉजिक बनाने के लिए, CASE
स्टेटमेंट को नेस्ट किया जा सकता है:
CASE WHEN REGEXP_CONTAINS(SKU, "Hats") THEN CASE WHEN Color = "blue" THEN "BLUE HAT" ELSE "JUST A HAT" END ELSE "NOT A HAT" END