Рассчитать общий итог столбца в SQL Server 2005 - PullRequest
3 голосов
/ 07 декабря 2011

Я использую SQL Server 2005 и VS 2008. У меня запрос, как показано ниже

SELECT  Month
    , SUM(Man) AS Man
    , SUM(Sal) AS Sal
    , SUM(Man + Sal) AS Total
FROM    (        
      SELECT  DATENAME(MONTH, DOB) AS Month
              , CASE WHEN TypeOfPost = 'Manager' THEN 1 ELSE 0 END AS Man
              , CASE WHEN TypeOfPost = 'Sales' THEN 1 ELSE 0 END AS Sal
      FROM    tableName
    ) g          
GROUP BY
    Month  

, который генерирует следующий вывод

Output--
-------------------------------------
Month      Man      Sal        Total
--------   -----   ------     ---------
January       1       1          2
June          1      NULL        1
November      1       1          2

Но теперь я хочу вычислить итоговую сумму в столбце Всего. Так что помогите мне.

Expected Output--
-------------------------------------
Month      Man      Sal        Total
--------   -----   ------     -------
January       1         1         2
June          1        NULL       1
November      1         1         2
-------------------------------------
                      Total       5
-------------------------------------

1 Ответ

5 голосов
/ 07 декабря 2011

Вы можете использовать опцию WITH ROLLUP в GROUP BY - это даст вам дополнительную строку, содержащую «свернутые» (суммированные) значения:

SELECT  Month
    , SUM(Man) AS Man
    , SUM(Sal) AS Sal
    , SUM(Man + Sal) AS Total
FROM    (        
      SELECT  DATENAME(MONTH, DOB) AS Month
              , CASE WHEN TypeOfPost = 'Manager' THEN 1 ELSE 0 END AS Man
              , CASE WHEN TypeOfPost = 'Sales' THEN 1 ELSE 0 END AS Sal
      FROM    tableName
    ) g          
GROUP BY
    Month WITH ROLLUP

Дополнительная строка будет содержать NULL для столбца Month и должна суммировать все остальные столбцы для вас

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