组合条件字段格式的 CASE 表达式
CASE expression in combination conditional fields format
尝试编写一个 CASE 表达式,我需要在其中评估 Family_size
和 Income
的组合,以便在任何组合为真时设置 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
您可能需要考虑所在州,因为阿拉斯加和夏威夷的贫困人口数量不同。
尝试编写一个 CASE 表达式,我需要在其中评估 Family_size
和 Income
的组合,以便在任何组合为真时设置 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
您可能需要考虑所在州,因为阿拉斯加和夏威夷的贫困人口数量不同。