Triggerlar va ulardan foydalanish position funksiyasi case ifodasini ishlatib shartli qiymatlarni ifodalash


CASE ifodasini ishlatib shartli qiymatlarni ifodalash


Download 147.3 Kb.
bet2/5
Sana28.01.2023
Hajmi147.3 Kb.
#1136955
1   2   3   4   5
Bog'liq
trigger....

CASE ifodasini ishlatib shartli qiymatlarni ifodalash
Birinchi CASE shaklini misol qilib olaylik:
Tanlang ID, ism, ish haqi, ish haqi qachon => 3000 keyin "RFP> = 3000" Qachon ish haqi> = 2000 keyin "2000<= ЗП < 3000" ELSE "ЗП < 2000" END SalaryTypeWithELSE, CASE WHEN Salary>= 3000 THEN "ish haqi> = 3000" Qachon ish haqi> = 2000 keyin "2000<= ЗП < 3000" END SalaryTypeWithoutELSE FROM Employees

Qachon shartlar yuqoridan pastgacha ketma -ket sinovdan o'tkaziladi. Birinchi qoniqarli shartga erishilganda, keyingi tekshirish to'xtatiladi va bu so'zning THEN so'zidan keyin ko'rsatilgan qiymat qaytariladi.


Agar WHEN shartlarining hech biri bajarilmasa, ELSE so'zidan keyin ko'rsatilgan qiymat qaytariladi (bu holda "BOShQA QAYTISH ..." degan ma'noni anglatadi).
Agar ELSE bloki ko'rsatilmagan bo'lsa va shartlar bajarilmasa, NULL qaytariladi.
Birinchi va ikkinchi shakllarda, ELSE bloki CASE strukturasining eng oxirida, ya'ni. barcha Qachon shartlardan keyin.
Keling, ikkinchi CASE shaklini olaylik:
Aytaylik, yangi yil uchun ular barcha xodimlarni mukofotlashga qaror qilishdi va bonuslar miqdorini quyidagi sxema bo'yicha hisoblashni so'rashdi:

  • IT bo'limi xodimlariga ish haqining 15 foizini berish;

  • Buxgalteriya bo'limi xodimlari ish haqining 10 foizi;

  • Qolganlarning hammasi ish haqining 5%.

Bu vazifa uchun biz CASE ifodasi bilan so'rovdan foydalanamiz:


ID, ism, ish haqi, Departament identifikatorini tanlang - aniqlik uchun biz foizni CASE DepartmentID qatorida ko'rsatamiz - tasdiqlangan qiymat 2dan keyin "10%" - buxgalterlarga beriladigan ish haqining 10 foizi 3 dan keyin 15% " - IT xodimlariga berish uchun ish haqining 15 foizi" Qolgan 5% " - qolganlarga 5% Yangi YILBonusPercent tugaydi, - bonus miqdorini ko'rish uchun CASE yordamida ifoda tuzamiz. Ish haqining 10 - 10 foizi buxgalterlarga Qachon 3 dan 15 - 15% maoshning 15% i IT xodimlariga beriladi Qolgan 5 - hamma 5% har bir xodimga bonusni tugatadi.

Bu WHID qiymatlari bo'yicha DepartmentID qiymatini ketma -ket tekshiradi. Birinchi DepartmentID WHEN qiymatiga teng bo'lganda, chek bekor qilinadi va THEN so'zidan keyin ko'rsatilgan qiymat qaytariladi.


Shunga ko'ra, agar IDID WHEN qiymatiga mos kelmasa, ELSE blokining qiymati qaytariladi.
Agar ELSE bloki bo'lmasa, IDID WHEN qiymatiga mos kelmasa, NULL qaytariladi.
Ikkinchi CASE formasini birinchi shakl yordamida ko'rsatish oson:
ID, 2, "10%" - buxgalterlarga beriladigan ish haqining 10 foizi, idorasi = 3, keyin "15%" - IT xodimlariga beriladigan ish haqining 15 foizi. 5% " - qolganlarning hammasi 5% ENDi Yangi YilBonusPercent, - bonus miqdorini ko'rish uchun CASE yordamida iborani yarating Ish haqi / 100 * VAQTIDA idorasi = 2 O'NA 10 - 10% buxgalterlarga berilishi kerak bo'lgan bo'limIDID = 3 15 15 - IT xodimlariga beriladigan maoshning 15 foizi, boshqa 5 - hamma 5% har bir xodimga bonusni tugatadi.
Shunday qilib, ikkinchi shakl - har bir WHEN qiymati / ifodasi bilan bir xil test qiymatini teng taqqoslashimiz kerak bo'lgan holatlar uchun soddalashtirilgan yozuv.

Download 147.3 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling