use*_*424 2 sql sql-server sql-server-2008
表
Member| Mum_Status
mem1 | active
mem2 | future
mem3 | active
mem3 | future
Run Code Online (Sandbox Code Playgroud)
如何编写查询以获得上表中的输出
期望的输出:
Member| Status
mem1 | active
mem2 | future
mem3 | active
Run Code Online (Sandbox Code Playgroud)
做一个GROUP BY.使用MIN挑有效(如果可用),否则将来返回.
select member, min(status)
from tablename
group by member
Run Code Online (Sandbox Code Playgroud)
只要没有引入其他状态类型,它们就能很好地工作.
或者,NOT EXISTS:
select member, status
from tablename t1
where status = 'active'
or NOT EXISTS (select * from tablename t2
where t2.member = t1.member
and t1.status = 'active')
Run Code Online (Sandbox Code Playgroud)
如果某行处于活动状态,请将其返回.否则它具有未来状态,如果同一成员的其他行没有活动状态,则返回它.