sql表示Active和Inactive状态

时间:2016-04-07 14:52:56

标签: sql sql-server

我写了一个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

2 个答案:

答案 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

查看截图 enter image description here