组合条件字段格式的 CASE 表达式

CASE expression in combination conditional fields format

尝试编写一个 CASE 表达式,我需要在其中评估 Family_sizeIncome 的组合,以便在任何组合为真时设置 Status AS 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]

这给出了错误:

Incorrect syntax near the keyword 'WHEN'

是否有巧妙的技巧,或者我必须单独编写 THEN 'Below'?喜欢:

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

尝试

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]

如上评论尝试:

 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]

根据federal poverty guideline 2016修正后。

基于这些 poverty guidelines 的额外更正以包括大于 8 的家庭人数。

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 

可以重写为:

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

要确认上述案例陈述中的方程式是正确的,您可以检查此 rextester link,它使用相同的方程式生成 1-12 的贫困 table:http://rextester.com/AWRCK1808

您可能需要考虑所在州,因为阿拉斯加和夏威夷的贫困人口数量不同。