1

複数の結果を持つ以下のようなケース ステートメントがあります。残念ながら、最初の 3 つの結果が満たされているため、他のオプションは無視されています。すべての結果を考慮した声明の方法はありますか?

 ,CASE WHEN T.T1_HoNOSCA_Score IS NULL THEN 'Missing T1'
    WHEN T.T2_HoNOSCA_Score IS NULL THEN 'Missing T2'
    WHEN T.T1HonosValidity IN ('NULL','Invalid 9','Invalid Null') 
    OR T.T2_HonosValidity IN ('NULL','Invalid 9','Invalid Null') THEN 'Invalid Data'
    WHEN T.T1_HoNOSCA_Score IS NULL AND T.T2_HoNOSCA_Score IS NULL THEN 'Missing T1 & T2'   
    WHEN T.T1_HoNOSCA_Score IS NULL AND T.T1HonosValidity IN ('NULL','Invalid 9','Invalid    `enter code here`Null') 
    OR T.T2_HonosValidity IN ('NULL','Invalid 9','Invalid Null') THEN 'Missing T1 & Invalid Data'
    WHEN T.T2_HoNOSCA_Score IS NULL AND T.T1HonosValidity IN ('NULL','Invalid 9','Invalid Null') 
    OR T.T2_HonosValidity IN ('NULL','Invalid 9','Invalid Null') THEN 'Missing T2 & Invalid Data'
    WHEN T.T1_HoNOSCA_Score IS NULL AND T.T2_HoNOSCA_Score IS NULL AND T.T1HonosValidity IN ('NULL','Invalid 9','Invalid Null') 
    OR T.T2_HonosValidity IN ('NULL','Invalid 9','Invalid Null') THEN 'Missing T1 & T2 & Invalid Data'
    ELSE NULL END AS Data_Quality_Type
4

2 に答える 2

2

ステートメントCASEには、相互に排他的ではないブール式が含まれています。これらの表現のいくつかは、他の表現よりも強力です。

を意味する場合、条件は条件よりも強いXと言われます。つまり、が true であるたびに、も true です。YXYYX

たとえば、次の 2 つの条件を考えてみましょう。

T.T2_HoNOSCA_Score IS NULL                                -- Condition 1

T.T1_HoNOSCA_Score IS NULL AND T.T2_HoNOSCA_Score IS NULL -- Condition 2

条件 2 が満たされるたびに、条件 1 も満たされますAND。これは、条件 1 に条件 2 を形成するための追加の基準が追加されているためです。したがって、条件 2 は条件 1 よりも強力です。

あなたのような相互に排他的ではない条件を含むケース ステートメントがある場合は、それらを最も強いものから最も弱いものの順に並べる必要があります。そうしないと、弱い条件が強い条件を「シャドー」し、条件が実行されなくなります。

于 2013-08-01T11:10:13.597 に答える