2016-07-26 9 views

ответ

3

Вы можете использовать условную агрегацию для этого:

SELECT COUNT(case when IsApproved = 0 then 0 end) as CountNotApproved, 
     COUNT(case when IsApproved = 1 then 1 end) as CountApproved 
FROM Erp_OrderReceipt; 

Это работает потому, что агрегатные функции игнорировать NULL. Результатом CASE является NULL для всех строк, которые не соответствуют условию.

Если СУБД поддерживает это, вы можете также использовать ANSI SQL filter пункт:

SELECT COUNT(*) FILTER (where IsApproved = 0) as CountNotApproved, 
     COUNT(*) FILTER (where IsApproved = 1) as CountApproved 
FROM Erp_OrderReceipt 
0

Вы можете использовать соединение и группу для этого

SELECT SUM(CountApproved) CountApproved, 
     SUM(CountNotApproved) CountNotApproved 
FROM 
(
    SELECT 
     0 as CountApproved, 
     COUNT(IsApproved) as CountNotApproved 
    FROM Erp_OrderReceipt where IsApproved=0 
    UNION 
    SELECT 
     COUNT(IsApproved) as CountApproved, 
     0 as CountNotApproved 
    FROM Erp_OrderReceipt where IsApproved=1 
) u 
+0

Синтаксис ошибки ... – jarlh

+0

Исправленная удалить ошибку синтаксиса – Juan

Смежные вопросы