Существует таблица клиентов. Я хочу указать активный и неактивный статус в одном запросе. Как я могу это сделать?Сложный SQL-запрос
SELECT count(*) as ACTIVE,
count(*) as INACTIVE
FROM V_CUSTOMER
WHERE STATUS='a' AND STATUS='i'
Существует таблица клиентов. Я хочу указать активный и неактивный статус в одном запросе. Как я могу это сделать?Сложный SQL-запрос
SELECT count(*) as ACTIVE,
count(*) as INACTIVE
FROM V_CUSTOMER
WHERE STATUS='a' AND STATUS='i'
Попробуйте использовать группу по:
SELECT count(*), STATUS FROM V_CUSTOMER
Where STATUS='a' OR STATUS='d'
GROUP BY STATUS
+1: Это лучший ответ –
это будет считать все комментарии активными + деактивированными, но я думаю, что ему нужно seprate количество активных и деактивированных –
@Jack - это решение возвращает две строки, тогда как решение, предложенное Pranay, даст вам два счета в одной строке, о которых вы просили. – APC
Мы можем использовать саз, чтобы перевести два значения 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
Там нет необходимости в ИНЕКЕ, если нет большое количество записей с другими значениями для STATUS, в этом случае используйте OR
вместо AND
:
WHERE STATUS='a' OR STATUS='d'
Я думаю, что 'case when' является сервером sql, а не оракулом? –
@StefanSteinegger - Oracle поддерживает CASE в операторах SELECT с 8i (т.е. более десяти лет) – APC
Я нашел эту ссылку: http: //www.techonthenet.com/oracle/functions/case.php –
Я думаю, что вам нужно что-то вроде этого:
select Status, count(*) from V_Customer
where STATUS='a' or STATUS='d'
group by STATUS
Это даст вам количество записей в состоянии.
SELECT count(decode(status,'a',1)) as ACTIVE,
count(decode(status,'d',1)) as DEACTIVE
FROM V_CUSTOMER
WHERE STATUS='a' or STATUS='d'
Неверный ответ, если вы выбрали? –
Мне просто нужен один запрос, а не одна строка. Спасибо всем – Jack
кажется, что вопрос непонятен –