我在oracle中有数据库表,
ID status cycle
T051 Passed s1
T051 Failed s1
T061 Failed s1
T061 Failed s1
T051 Failed s2
我想要这样的输出
ID cycle pass fail
T051 s1 1 0
T061 s1 0 1
T051 s2 0 1
逻辑:->如果通过了相应的id&cycle任何状态,则其通过计数1,如果相应的id&cycle所有状态都失败,则失败计数1
任何人都可以在这里帮助吗?
使用case
语句尝试以下操作。
select
ID,
cycle,
sum(case when status = 'Passed' then 1 else 0 end) as pass,
sum(case when status = 'Failed' then 1 else 0 end) as fail
from yourTable
group by
ID,
cycle
SELECT Id, Cycle,
(CASE WHEN STATUS = 'Passed' THEN 1 ELSE 0 END) as Pass,
(CASE WHEN STATUS = 'Failed' THEN 1 ELSE 0 END) as Fail
FROM TABLE_NAME;