我有一个功能表,其中每个功能都由其ID(DB列)和Bugs表标识,其中每个功能都有一对多的关系,并带有错误表。
Feature Table has columns
id Description
Bugs Table has columns
ID Feature_ID Status
如果一个错误状态是0或1,我会认为它是打开的,如果状态是2,我会认为它是关闭的。
我正在尝试编写一个查询,指出功能是否可以根据其状态被视为已通过或失败。
select F.ID
CASE WHEN count(B.ID) > 0 THEN 'FAIL'
ELSE 'PASS'
END as FEATURE_STATUS
from Feature F,
Bugs B
where B.Status in (0,1)
group by F.ID;
我的查询总是提供失败的功能但未通过,如何修改我的查询以返回两者?
答案 0 :(得分:2)
听起来你想要像
这样的东西SELECT f.id,
(CASE WHEN open_bugs = 0
THEN 'PASS'
ELSE 'FAIL'
END) feature_status,
open_bugs,
closed_bugs
FROM (SELECT f.id,
SUM( CASE WHEN b.status IN (0,1)
THEN 1
ELSE 0
END) open_bugs,
SUM( CASE WHEN b.status = 2
THEN 1
ELSE 0
END) closed_bugs
FROM feature f
JOIN bugs b ON (f.id = b.feature_id)
GROUP BY f.id)
答案 1 :(得分:2)
SELECT F.ID,
CASE WHEN SUM(CASE WHEN B.ID IN (0, 1) THEN 1 ELSE 0 END) > 0 THEN 'Fail'
ELSE 'Success' END AS FEATURE_STATUS
from Feature F
JOIN Bugs B ON B.Feature_ID = F.ID
group by F.ID