Есть ли способ включить сумму всех дел?

0

Учитывая SQL: есть ли способ привести итог набора результатов?

SELECT 
    SUM(CASE
        WHEN status = 3 THEN 1
        ELSE 0
    END) AS Open,
    SUM(CASE
        WHEN status = 4 THEN 1
        ELSE 0
    END) AS Close
FROM
    Table1
WHERE
    id = 2;

Результат:

Open,Close
5,5

Желаемый результат:

Open,Close,Total
5,5,10
  • 1
    Обратите внимание, что в MySQL вы можете использовать SUM (status = 4) вместо
Теги:

3 ответа

3
Лучший ответ

просто добавьте другое дело

SELECT 
    SUM(CASE
        WHEN status = 3 THEN 1
        ELSE 0
    END) AS Open,
    SUM(CASE
        WHEN status = 4 THEN 1
        ELSE 0
    END) AS Close
    SUM(CASE
        WHEN status IN (3, 4) THEN 1
        ELSE 0
    END) AS Total
FROM
    Table1
WHERE
    id = 2;
1

Вы можете использовать CTE:

WITH sumCase AS (
SELECT 
    SUM(CASE
        WHEN status = 3 THEN 1
        ELSE 0
    END) AS Open,
    SUM(CASE
        WHEN status = 4 THEN 1
        ELSE 0
    END) AS Close
FROM
    Table1
WHERE
    id = 2;)
SELECT Open,Close, Open + Close AS Total FROM Table1;

http://www.mysqltutorial.org/mysql-cte/

0

использование подзапроса

   select open,close,open+close as total from
    (
       SELECT 
        SUM(CASE  WHEN status = 3 THEN 1
             ELSE 0
             END ) AS Open,
       SUM(CASE   WHEN status = 4 THEN 1
           ELSE 0
           END) AS Close
    FROM
    Table1
    WHERE   id = 2   ) as T

Ещё вопросы

Сообщество Overcoder
Наверх
Меню