متعددة عند داخل حالة عدم التعبير في SQL؟
سؤال
DECLARE @TestVal int
SET @TestVal = 5
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
ELSE 'Other'
END
رأيت نموذج التعليمات البرمجية هذا على الإنترنت ولكن لم أتمكن من العثور على مثال حيث لم يكن هناك تعبير وكان أكثر من واحد عندما، لذلك أتساءل عما إذا كان هذا النوع من الأشياء على ما يرام:
DECLARE @TestVal int
SET @TestVal = 5
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
WHEN (select ...) = 1 THEN 'Other Value'
WHEN (select ...) = 2 THEN 'Other Value 2'
ELSE 'Other'
END
أو هل أحتاج إلى أن أقول حالة متى لكل سطر؟
المحلول
قضية يأخذ النموذج التالي
CASE WHEN Condition THEN Result
WHEN Condition2 THEN Result2
ELSE Default
END
يحرر
هذا يفترض أن استخدام Microsoft SQL Server قد تكون DBMS الأخرى مختلفة
نصائح أخرى
نعم، هذا جيد، لكنني سأصطف "عندما" عموديا وشرح ذلك مثل هذا:
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
WHEN @TestVal <=10 THEN 'Top 10'
WHEN @TestVAl <=25 THEN 'Top 25'
ELSE 'Other'
END
قد يكون التنسيق مجرد خلل تخفيض، ولكن (select...)
في مثالك معقدة ما يجب أن يكون مقتطف أبسط.
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
WHEN @TestVal <=10 THEN 'Top 10'
WHEN @TestVAl <=25 THEN 'Top 25'
ELSE 'Other'
END
فيما يتعلق ببيانات حالة التعشيش، يمكن القيام بذلك جيدا (حتى 10 بيانات حالة متداخل مسموح بها داخل SQL)
لا تنتمي إلى StackOverflow