复杂的SQL查询

Jac*_*ack 2 sql t-sql oracle

有一个客户表.我想在一个查询中列出活动和非活动状态.我怎样才能做到这一点?

SELECT count(*) as ACTIVE, 
count(*) as INACTIVE 
FROM V_CUSTOMER 
WHERE STATUS='a' AND STATUS='i'
Run Code Online (Sandbox Code Playgroud)

Pra*_*ana 5

我们可以使用CASE语句来转换STATUS的两个值:

SELECT 
    sum(case when STATUS = 'a' then 1 else 0 end) as ACTIVE 
    , sum(case when STATUS = 'd' then 1 else 0 end) as DEACTIVE 
FROM V_CUSTOMER 
Run Code Online (Sandbox Code Playgroud)

除非有大量具有STATUS其他值的记录,否则不需要WHERE子句,在这种情况下使用OR而不是AND:

WHERE STATUS='a' OR STATUS='d'         
Run Code Online (Sandbox Code Playgroud)