我正在努力在 MYSQL 中获得所需的输出。
我有这样的桌子:
Result_ID | 代码 | 规则 |
---|---|---|
39566 | O | 0 |
39566 | G | 0 |
39566 | R | 1135 |
40115 | R | 1135 |
我想应用的标准是,如果代码 = R 并且规则 <> 0 然后“通过”ELSE“手册”。但它应该检查所有具有相同 result_id 的行。
我试过这样写:
SELECT DISTINCT
[RESULT_ID]
,CODE
,RULE
,CASE WHEN CODE ='R' AND RULE_DETAIL_ID <> 0 THEN 'Passed'
WHEN CODE <> 'R' THEN 'MANUAL'
END as abc
但它只检查一行。如何让它检查所有行是否有相同的 result_id?
结果应该是这样的
Result_ID | 代码 | 规则 | abc |
---|---|---|---|
39566 | O | 0 | 手册 |
39566 | G | 0 | 手册 |
39566 | R | 1135 | 手册 |
40115 | R | 1135 | 通过 |
答案 0 :(得分:0)
一种可能的解决方案是使用 exists
关联相同的 Id 值
select *,
case when exists (
select * from t x where x.result_id=t.result_id
and not( code='r' and rule != 0 )
) then 'MANUAL' else 'Passed' end
from t