در اين جلسه از آموزش هاي SQL ميخواهيم در ارتباط با دستور CASE با شما صحبت كنيم. دستور CASE مانند IF/ELSE مي باشد.
case يک عبارت را به عنوان ورودی می گیرد و سپس آن را با همه ی مقادیر موجود در عبارت when مقایسه می کند.خروجی هر عبارت با then تولیدمی شود. عبارت else نیز در مواقعی به کار می رود که داده ی ورودی با هیچ یک از داده ها ی موجود در when منطبق نباشد. براي آشنايي بيشتر به مثال هاي زير توجه كنيد:
يك كوئري بنويسيد كه كه كالا ها را بر اساس قيمت دسته بندي كند، به اين صورت كه اگر قيمت كالا كمتر از 10 بود در دسته “ارزان”، اگر قيمت كالا بين 10 و 50 بود در دسته “متوسط” و اگر بيشتر از 50 بود در دسته “گران” قرار بگيرد.
SELECT PRODUCTID,PRODUCTNAME,UNITPRICE, CASE
‘ارزان’ when unitprice<10 then N
‘متوسط’when unitprice>=10 and unitprice<=50 then N
‘گران’when unitprice<50 then N
‘غيرممكن’else
end as pricerange
نكات:
- هر CASE با يك end پايان مي يابد.
- اگر يك كوئري در شرط ها با هم همپوشاني داشته باشند، اولين شرط خوانده مي شود.
- جلوي then فقط يك مقدار مي تواند باشد.
مثال بعدي:
يك كوئري بنويسيد كه كه كارمندان را بر اساس سن آن ها دسته بندي كند، به اين صورت كه اگر سن كمتر از 40 سال باشد در دسته “جوان”، اگر سن بين 40 تا 60 باشد در دسته “ميانسال” و اگر سن بيشتر 60 باشد در دسته “مسن” قرار بگيرند.
‘سن’SELECT EMPLOYEEID, FIRSTNAME,LASTNAME,DATEDIFF(YEAR,BIRTHDATE,GETDATE()) AS N
‘جوان’WHEN DATEDIFF(YEAR,BIRTHDATE,GETDATE()) <40 THEN N
‘ميانسال’WHEN DATEDIFF(YEAR,BIRTHDATE,GETDATE()) BETWEEN 40 AND 60 THEN N
‘مسن’WHEN DATEDIFF(YEAR,BIRTHDATE,GETDATE()) >60 THEN N
END
AS AGERANGE