是否可以使用SELECT CASE STATEMENT,然后在WHERE条件中使用THAT列?
类似的东西:
LEFT JOIN (
SELECT student_id
,
CASE
WHEN (
consent_type = 'Medicaid'
//condtion here
)
THEN 'Yes'
ELSE 'No'
END AS refusal
FROM students_refusal
) as refusals USING(student_id)
这将输出是/否列。现在我想输出其中包含“No”值的拒绝列。我尝试使用
WHERE refusal = 'No'
。它只是说列拒绝不存在。怎么做?
答案 0 :(得分:1)
创建子查询:
select * from (
select case when someField=1 then 'yes' else 'no' end as f
from sometable ) tb
where tb.f = 'yes'
答案 1 :(得分:0)
“WHERE拒绝='否'。它只是说列拒绝不存在。怎么做?”
你无法在refusal
中引用WHERE clause
,所以我认为你应该这样改变:
IF (consent_type = 'Medicaid' //condtion here, 'Yes', 'No') AS refusal
FROM students_refusal
WHERE
IF (consent_type = 'Medicaid' //condtion here, 'Yes', 'No') = 'No'
顺便说一句,我认为IF()
在这种情况下优于CASE
。