আমি মনে করি এগুলি আপনার পক্ষে সহায়ক হতে পারে।
SELECT
একটি সহজ CASE
অভিব্যক্তি সঙ্গে একটি বিবৃতি ব্যবহার
একটি SELECT
বিবৃতিতে, একটি সাধারণ CASE
অভিব্যক্তি কেবলমাত্র একটি সমতা পরীক্ষা করার অনুমতি দেয়; অন্য কোন তুলনা করা হয় না। নিম্নলিখিত উদাহরণটি CASE
পণ্য লাইন বিভাগগুলিকে আরও বোধগম্য করার জন্য তাদের পরিবর্তনগুলি পরিবর্তন করতে অভিব্যক্তিটি ব্যবহার করে ।
USE AdventureWorks2012;
GO
SELECT ProductNumber, Category =
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
END,
Name
FROM Production.Product
ORDER BY ProductNumber;
GO
SELECT
একটি অনুসন্ধান করা CASE
অভিব্যক্তি সহ একটি বিবৃতি ব্যবহার করে
একটি SELECT
বিবৃতিতে, অনুসন্ধান CASE
অভিব্যক্তি তুলনা মানগুলির উপর ভিত্তি করে ফলাফল সেটে মানগুলি প্রতিস্থাপনের অনুমতি দেয়। নিম্নলিখিত উদাহরণটি পণ্যের দামের সীমার ভিত্তিতে একটি পাঠ্য মন্তব্য হিসাবে তালিকার দাম প্রদর্শন করে।
USE AdventureWorks2012;
GO
SELECT ProductNumber, Name, "Price Range" =
CASE
WHEN ListPrice = 0 THEN 'Mfg item - not for resale'
WHEN ListPrice < 50 THEN 'Under $50'
WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
ELSE 'Over $1000'
END
FROM Production.Product
ORDER BY ProductNumber ;
GO
CASE
একটি ORDER BY
ধারা ব্যবহার করে
প্রদত্ত কলাম মানের উপর ভিত্তি করে সারিগুলির সাজানোর ক্রম নির্ধারণ করতে নিম্নলিখিত উদাহরণগুলি CASE
একটি ORDER BY
দফাতে অভিব্যক্তিটি ব্যবহার করে । প্রথম উদাহরণে, হিউম্যান রিসোর্সেসের এমপ্লয়ে সারণীর স্যালারিফ্ল্যাগ কলামে মানটি মূল্যায়ন করা হয়। স্যালারিফ্লেগ 1 এ সেট করা কর্মচারী BusinessEntityID দ্বারা ক্রমবর্ধমান ক্রমে ফিরে আসে। বেতনযুক্তফ্ল্যাগ 0 তে সেট করা কর্মচারী BusinessEntityID দ্বারা ক্রমবর্ধমান ক্রমে ফিরে আসে। দ্বিতীয় উদাহরণে, ফলাফল সেটটি কলাম টেরিটরি নাম অনুসারে অর্ডার করা হয় যখন কলামটি দেশীয় অঞ্চল নামটি 'মার্কিন যুক্তরাষ্ট্র' এর সমান এবং অন্য সমস্ত সারিগুলির জন্য কান্ট্রি রিজিওননেম দ্বারা অর্ডার করা হয়।
SELECT BusinessEntityID, SalariedFlag
FROM HumanResources.Employee
ORDER BY CASE SalariedFlag WHEN 1 THEN BusinessEntityID END DESC
,CASE WHEN SalariedFlag = 0 THEN BusinessEntityID END;
GO
SELECT BusinessEntityID, LastName, TerritoryName, CountryRegionName
FROM Sales.vSalesPerson
WHERE TerritoryName IS NOT NULL
ORDER BY CASE CountryRegionName WHEN 'United States' THEN TerritoryName
ELSE CountryRegionName END;
CASE
একটি UPDATE
বিবৃতি ব্যবহার করে
নীচের উদাহরণটি CASE
একটি UPDATE
বিবৃতিতে অভিব্যক্তিটি ব্যবহার করে স্যালারিফ্ল্যাগ সহ কর্মীদের জন্য কলামে ভ্যাকেশনআউটস নির্ধারিত হয়েছে তা নির্ধারণ করার জন্য 0 তে নির্ধারণ করা হয়েছে। যখন ভ্যাকেশনহর্স থেকে 10 ঘন্টা বিয়োগ করে তখন নেতিবাচক মান আসে, ভ্যাকেশনহর্স 40 ঘন্টা বৃদ্ধি পায়; অন্যথায়, ছুটির ঘন্টা 20 ঘন্টা বৃদ্ধি করা হয়। OUTPUT
দফা আগে ও অবকাশ মান পরে প্রদর্শন করতে ব্যবহৃত হয়।
USE AdventureWorks2012;
GO
UPDATE HumanResources.Employee
SET VacationHours =
( CASE
WHEN ((VacationHours - 10.00) < 0) THEN VacationHours + 40
ELSE (VacationHours + 20.00)
END
)
OUTPUT Deleted.BusinessEntityID, Deleted.VacationHours AS BeforeValue,
Inserted.VacationHours AS AfterValue
WHERE SalariedFlag = 0;
CASE
একটি HAVING
ধারা ব্যবহার করে
নীচের উদাহরণটি বিবৃতিতে ফিরে আসা সারিগুলিকে সীমাবদ্ধ করতে CASE
একটি HAVING
ধারাতে ভাবটি ব্যবহার করে SELECT
। বিবৃতিটি হিউম্যান রিসোর্সেস.এম্পলয়ে টেবিলের প্রতিটি কাজের শিরোনামের সর্বাধিক ঘন্টাের হার প্রদান করে। HAVING
দফা যে 42 ডলার চেয়ে সর্বোচ্চ বেতন হার বৃহত্তর 40 টি ডলার বা মহিলাদের তুলনায় সর্বোচ্চ বেতন হার বৃহত্তর সঙ্গে পুরুষদের দ্বারা অনুষ্ঠিত হয় যারা শিরোনাম নিষিদ্ধ।
USE AdventureWorks2012;
GO
SELECT JobTitle, MAX(ph1.Rate)AS MaximumRate
FROM HumanResources.Employee AS e
JOIN HumanResources.EmployeePayHistory AS ph1 ON e.BusinessEntityID = ph1.BusinessEntityID
GROUP BY JobTitle
HAVING (MAX(CASE WHEN Gender = 'M'
THEN ph1.Rate
ELSE NULL END) > 40.00
OR MAX(CASE WHEN Gender = 'F'
THEN ph1.Rate
ELSE NULL END) > 42.00)
ORDER BY MaximumRate DESC;
এই উদাহরণের আরও বিশদের বিবরণের জন্য উত্সটি দেখুন ।
এছাড়াও দুর্দান্ত বিবরণ সহ কয়েকটি উদাহরণের জন্য এখানে এবং এখানে যান ।