Сложный SQL-запрос - PullRequest
       1

Сложный SQL-запрос

2 голосов
/ 13 июля 2010

Есть таблица клиентов. Я хочу перечислить активное и неактивное состояние в одном запросе. Как я могу это сделать?

SELECT count(*) as ACTIVE, 
count(*) as INACTIVE 
FROM V_CUSTOMER 
WHERE STATUS='a' AND STATUS='i'

Ответы [ 4 ]

5 голосов
/ 13 июля 2010

Мы можем использовать оператор 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 

Нет необходимости в предложении WHERE, если нет большого количества записей с другими значениями для STATUS, в этом случае используйте OR вместо AND:

WHERE STATUS='a' OR STATUS='d'         
4 голосов
/ 13 июля 2010

Попробуйте использовать группу по:

SELECT count(*), STATUS FROM V_CUSTOMER
Where STATUS='a' OR STATUS='d'
GROUP BY STATUS
3 голосов
/ 13 июля 2010
SELECT count(decode(status,'a',1)) as ACTIVE, 
count(decode(status,'d',1)) as DEACTIVE 
FROM V_CUSTOMER 
WHERE STATUS='a' or STATUS='d' 
1 голос
/ 13 июля 2010

Думаю, вам понадобится что-то вроде этого:

select Status, count(*) from V_Customer
where STATUS='a' or STATUS='d'
group by STATUS

Это даст вам количество записей на статус.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...