SQL CASE স্টেটমেন্ট একটি শর্তাবলী বা কন্ডিশনাল লজিক প্রদান করে, যা SQL কুয়েরি বা স্টোরড প্রসিডিউরের মধ্যে শর্ত অনুযায়ী মান নির্ধারণ করতে ব্যবহৃত হয়। এটি IF...ELSE লজিকের মতো কাজ করে, তবে SQL এর মধ্যে এটি ব্যবহার করা হয়।
CASE স্টেটমেন্ট দুটি প্রকারে ব্যবহৃত হতে পারে:
- Simple CASE Expression: এক বা একাধিক মানের মধ্যে শর্ত পরীক্ষা করা।
- Searched CASE Expression: এক বা একাধিক শর্ত অনুযায়ী মান নির্বাচন করা।
১. Simple CASE Expression
এটি ব্যবহার করা হয় যখন আপনি একটি কলামের মানের ভিত্তিতে অন্য একটি মান নির্ধারণ করতে চান। এই ক্ষেত্রে, আপনার কাছে একটি নির্দিষ্ট কলামের মান থাকবে, এবং আপনি সেই মানের জন্য একটি শর্ত নির্ধারণ করবেন।
সিনট্যাক্স:
CASE column_name
WHEN value1 THEN result1
WHEN value2 THEN result2
...
ELSE result_default
END
উদাহরণ:
ধরা যাক, একটি Students টেবিল আছে যেখানে ছাত্রদের Grade (A, B, C, D) আছে এবং আমরা তাদের জন্য মান নির্ধারণ করতে চাই। উদাহরণস্বরূপ:
SELECT Name,
Grade,
CASE Grade
WHEN 'A' THEN 'Excellent'
WHEN 'B' THEN 'Good'
WHEN 'C' THEN 'Average'
ELSE 'Needs Improvement'
END AS Performance
FROM Students;
এখানে:
Gradeকলামের মানের ভিত্তিতেPerformanceকলামে ফলাফল দেওয়া হবে।- যদি
Grade'A' হয়, তাহলেPerformanceহবে 'Excellent' - যদি
Grade'B' হয়, তাহলেPerformanceহবে 'Good' - অন্যান্য মানের জন্য 'Needs Improvement' দেখাবে।
- যদি
২. Searched CASE Expression
এটি তখন ব্যবহার করা হয় যখন আপনি একাধিক শর্ত পরীক্ষা করতে চান এবং প্রতিটি শর্তের জন্য নির্দিষ্ট ফলাফল ফেরত দিতে চান।
সিনট্যাক্স:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result_default
END
উদাহরণ:
ধরা যাক, আপনি ছাত্রদের Age এবং Score পরীক্ষা করে তাদের ফলাফল নির্ধারণ করতে চান। উদাহরণস্বরূপ:
SELECT Name, Age, Score,
CASE
WHEN Age >= 18 AND Score >= 50 THEN 'Pass'
WHEN Age >= 18 AND Score < 50 THEN 'Fail'
WHEN Age < 18 AND Score >= 50 THEN 'Underage Pass'
ELSE 'Underage Fail'
END AS Result
FROM Students;
এখানে:
- আমরা
AgeএবংScoreকলামগুলির শর্ত অনুসারে ছাত্রদের ফলাফল নির্ধারণ করছি:- যদি
Age >= 18এবংScore >= 50হয়, তাহলেResultহবে 'Pass' - যদি
Age >= 18এবংScore < 50হয়, তাহলেResultহবে 'Fail' - যদি
Age < 18এবংScore >= 50হয়, তাহলেResultহবে 'Underage Pass' - অন্যথায়, 'Underage Fail' দেখাবে।
- যদি
৩. CASE এর ব্যবহার GROUP BY এর সাথে
CASE স্টেটমেন্ট সাধারণত GROUP BY এর সাথে ব্যবহার করা যায়, যাতে আপনি শর্তাবলী অনুসারে গ্রুপিং বা এগ্রিগেশন করতে পারেন।
উদাহরণ:
ধরা যাক, আপনার Orders টেবিল আছে যেখানে অর্ডারের Amount এবং Status রয়েছে, এবং আপনি অর্ডারের পরিমাণের ভিত্তিতে মোট বিক্রয়ের হিসাব করতে চান:
SELECT
CASE
WHEN Amount > 1000 THEN 'High Value'
WHEN Amount BETWEEN 500 AND 1000 THEN 'Medium Value'
ELSE 'Low Value'
END AS OrderValue,
SUM(Amount) AS TotalSales
FROM Orders
GROUP BY
CASE
WHEN Amount > 1000 THEN 'High Value'
WHEN Amount BETWEEN 500 AND 1000 THEN 'Medium Value'
ELSE 'Low Value'
END;
এখানে:
- আমরা
Amountঅনুসারে অর্ডারগুলিকে 'High Value', 'Medium Value', এবং 'Low Value' হিসাবে শ্রেণীবদ্ধ করছি এবং প্রতিটি শ্রেণীভুক্ত মানের জন্য মোট বিক্রয় (TotalSales) গণনা করছি।
৪. CASE স্টেটমেন্টে NULL মান ব্যবহার
CASE স্টেটমেন্টে NULL মানও পরীক্ষিত হতে পারে, যাতে আপনি NULL মানের জন্য আলাদা ফলাফল প্রদান করতে পারেন।
উদাহরণ:
SELECT Name,
Age,
CASE
WHEN Age IS NULL THEN 'Age not provided'
WHEN Age < 18 THEN 'Minor'
ELSE 'Adult'
END AS AgeStatus
FROM Students;
এখানে:
- যদি
Ageকলামে মান না থাকে (NULL), তাহলে 'Age not provided' দেখাবে। - যদি
Age18 বছরের কম হয়, তাহলে 'Minor' দেখাবে। - অন্যথায়, 'Adult' দেখাবে।
সারাংশ
SQL CASE স্টেটমেন্ট একটি শর্তাবলী বা কন্ডিশনাল লজিক যা SQL কোডে শর্ত অনুযায়ী মান নির্ধারণ করতে ব্যবহৃত হয়। এটি Simple CASE এবং Searched CASE দুইভাবে ব্যবহৃত হতে পারে:
- Simple CASE: একটি কলামের মানের ভিত্তিতে শর্ত পরীক্ষা।
- Searched CASE: একাধিক শর্ত পরীক্ষা এবং নির্দিষ্ট ফলাফল প্রদান।
CASE স্টেটমেন্টটি শর্তের ভিত্তিতে ফলাফল নির্ধারণ করতে সহায়তা করে এবং এটি SQL কুয়েরি, স্টোরড প্রসিডিউর, এবং ফাংশনে ব্যাপকভাবে ব্যবহৃত হয়।