بناء المنطق الشرطي المتقدم باستخدام تعبير CASE WHEN في SQL
في الدرس السابق، استعرضنا كيفية استبعاد أو تصفية القيم المفقودة باستخدام IS NULL و IS NOT NULL. ننتقل اليوم إلى أداة أساسية لإعادة تصنيف البيانات وإنشاء متغيرات جديدة دون تعديل الجداول الأصلية: تعبير CASE WHEN.
الشرح الجوهري:
يُعد CASE WHEN بمثابة جملة IF-THEN-ELSE داخل لغة SQL. يُتيح لك فحص شروط محددة صفاً بصف، وإرجاع قيمة مخصصة عندما يتحقق الشرط.
يُستخدم بكثرة في:
تصنيف العملاء (مثل: عميل برونزي، فضي، ذهبي).
تقسيم القيم الرقمية إلى فئات (Binning/Bucketing).
استبدال الأكواد والرموز بنصوص واضحة ومفهومة للأعمال.
مثال عملي:
لدينا جدول الطلبات orders ونريد تصنيف حجم كل طلب (order_tier) بناءً على قيمته المالية order_amount
SELECT
order_id,
customer_id,
order_amount,
CASE
WHEN order_amount >= 1000 THEN 'طلب مرتفع القيمة (High)'
WHEN order_amount >= 500 THEN 'طلب متوسط القيمة (Medium)'
ELSE 'طلب منخفض القيمة (Low)'
END AS order_tier
FROM orders;
ملاحظة الترتيب: يتم تقييم الشروط بالترتيب من الأعلى إلى الأسفل، وبمجرد تحقق أول شرط صحيح، تتوقف المقارنة ويُرجع الناتج فوراً.
الخلاصة:
يُختم تعبير CASE دائماً بالكلمة المفتاحية END.
استخدام ELSE اختياري ولكنه ممارسة ممتازة لتجنب ظهور قيم NULL إذا لم يتحقق أي من الشروط السابقة.
يمكنك أيضاً استخدام CASE داخل الدوال التجميعية مثل SUM(CASE WHEN ... THEN 1 ELSE 0 END) لحساب الشروط المخصصة (Conditional Aggregation).
2August 14, 2026 2.3K 6