متعددة عند داخل حالة عدم التعبير في SQL؟

StackOverflow https://stackoverflow.com/questions/582514

  •  06-09-2019
  •  | 
  •  

سؤال

    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)

http://msdn.microsoft.com/en-us/library/ms181765.aspx.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top