2016-12-14 16 views
1

Family_sizeIncomeを組み合わせて評価する必要があるCASE式を書くと、いずれかの組み合わせが真である場合、Statusを以下のように設定します。巧妙なトリックがあります組み合わせの条件式のフィールド式

Incorrect syntax near the keyword 'WHEN'

または私が個別にTHEN 'Below'を記述する必要があります。

CASE 
    ((WHEN Family_size = 1 AND Income <=11800) 
     OR(WHEN Family_size = 2 AND Income <=16020) 
     OR(WHEN Family_size = 3 AND Income <=20160) 
     OR(WHEN Family_size = 4 AND Income <=24300) 
     OR(WHEN Family_size = 5 AND Income <=28400) 
     OR(WHEN Family_size = 6 AND Income <=32580) 
     OR(WHEN Family_size = 7 AND Income <=36730) 
     OR(WHEN Family_size = 8 AND Income <=40890) 
    THEN 'Below' ELSE 'Above' END) AS [Status] 

これはエラーになりますか?同様に:試してみる上でコメントしたよう

CASE 
     WHEN Family_size = 1 AND Income <=11800 THEN 'Below' 
     WHEN Family_size = 2 AND Income <=16020 THEN 'Below' 
and so on... 
+2

'WHEN' ** once **そしてあなたの条件を' OR'してください –

+0

あなたが示唆していることは完全に有効です。 –

+0

重複した回答の中で誰が投票するのか分かりませんでしたので、私は両方とも笑っています – AS91

答えて

2

federal poverty guideline 2016に基づいて補正した後。式は上記の場合に正しいことを確認するため

select [Status] = case 
    when Family_size < 7 and Income <= (11880 + ((family_size-1)*4140)) 
     then 'Below' 
    when Family_size >= 7 and Income <= (36730 + ((family_size-7)*4160)) 
     then 'Below' 
     else 'Above' 
     end 

:家族を含むように、これらのpoverty guidelinesに基づい

追加補正が

select [Status] = 
    case 
    when (Family_size = 1 and Income <=11880) -- Corrected to 11880 for federal poverty guideline 2016 
    or(Family_size = 2 and Income <=16020) 
    or(Family_size = 3 and Income <=20160) 
    or(Family_size = 4 and Income <=24300) 
    or(Family_size = 5 and Income <=28440) -- Corrected to 28440 for federal poverty guideline 2016 
    or(Family_size = 6 and Income <=32580) 
    or(Family_size = 7 and Income <=36730) 
    or(Family_size = 8 and Income <=40890) 
    then 'Below' else 'Above' end as 

のように書き換えることができ8より大きいサイズ同じ式を使って1-12の貧困テーブルを生成するこのrextesterリンクを確認することができます:http://rextester.com/AWRCK1808

アラスカ州とハワイ州の貧困数が異なるため、州を考慮する必要があります。

+0

これは私が探していたものです。ありがとう! – AS91

+0

(11880 +(family_size -1)* 4140)は7人以下の家族の連邦標準式ですか? – AS91

+1

はい。 7番ヘッドでは7分の4150が得られます。 8歳以上の人は7日後に1頭につき4160点を獲得します。 – SqlZim

2

SELECT CASE 
    WHEN (Family_size = 1 AND Income <=11800) 
     OR(Family_size = 2 AND Income <=16020) 
     OR(Family_size = 3 AND Income <=20160) 
     OR(Family_size = 4 AND Income <=24300) 
     OR(Family_size = 5 AND Income <=28400) 
     OR(Family_size = 6 AND Income <=32580) 
     OR(Family_size = 7 AND Income <=36730) 
     OR(Family_size = 8 AND Income <=40890) 
    THEN 'Below' ELSE 'Above' END AS [Status] 
2

をお試しください:

CASE WHEN (Family_size = 1 AND Income <=11800) 
    OR (Family_size = 2 AND Income <=16020) 
    OR (Family_size = 3 AND Income <=20160) 
    OR (Family_size = 4 AND Income <=24300) 
    OR (Family_size = 5 AND Income <=28400) 
    OR (Family_size = 6 AND Income <=32580) 
    OR (Family_size = 7 AND Income <=36730) 
    OR (Family_size = 8 AND Income <=40890) 
    THEN 'Below' ELSE 'Above' END AS [Status] 
関連する問題