我写了一个sql来得到以下结果:
Case No: 1 Status:Inactive
Case No: 2 Status:Active
Case No: 2 Status:Inactive
Case No: 3 Status:Active
sql是:
select Case No,
Case when status in ( 'Hospital', 'Discharge') then 'Inactive' else 'Active' end as status
from Cases
如果情况为no,例如情况为2,则存在不同的状态:Inactive和Active,则状态为非活动状态。 如何修改Sql以获得以下结果?
Case No :1 Status:Inactive
Case No :2 Status:Inactive
Case No: 3 Status:Active
答案 0 :(得分:2)
根据您的状态名称,使用max()
似乎就足够了:
select CaseNo,
max(Case when status in ( 'Hospital', 'Discharge') then 'Inactive' else 'Active'
end) as status
from Cases
group by CaseNo;
更通用的解决方案不依赖于名称的词典排序:
select CaseNo,
(case when sum(status in ('Hospital', 'Discharge')) > 0
then 'Inactive'
else 'Active'
end) as status
from Cases
group by CaseNo;
答案 1 :(得分:0)
尝试以下查询
Select [Case No],
CASE MAX(Status) WHEN 0 THEN 'active' ELSE 'Inactive' END Status
FROM
(
select [Case No],
CASE WHEN status in ( 'Hospital', 'Discharge') THEN 1 ELSE 0 END status
from Cases ) C
group by [Case No]
<强> SQL demo link 强>