SQL Server 2008 накопительный пакет с псевдонимом - PullRequest
0 голосов
/ 24 октября 2018

У меня есть приведенный ниже запрос, и итоговое значение в моей строке покажет NULL, поскольку заголовок и сумма будут точными.Я попытался использовать группировку с оператором case, кажется, ничего не работает.Мой поиск на этом сайте не дал решения, которое сработало.Если я использую следующее решение, я получаю сообщение об ошибке:

Не удается связать идентификатор из нескольких частей

CASE
   WHEN GROUPING(B.Department) = 1  
      THEN 'Total'
      ELSE [B.Department]
END [B.Department],

Select

B.Department,
SUM(CASE datepart(month, [Created on]) WHEN 1 Then 1 ELSE 0 END) AS 'January'
SUM(CASE datepart(month, [Created on]) WHEN 2 Then 1 ELSE 0 END) AS 'February'
SUM(CASE datepart(month, [Created on]) WHEN 3 Then 1 ELSE 0 END) AS 'March'
.
.
SUM(CASE datepart(year, [Created on]) WHEN 2018 Then 1 ELSE 0 END) AS 'YTD'

FROM 
    [Table Cases] A
LEFT JOIN 
    [Table Departments] B ON A.Department = B.Dept
GROUP BY 
    B.Department WITH ROLLUP 

Спасибо: -)

1 Ответ

0 голосов
/ 24 октября 2018

Как правило, это решается с помощью COALESECE() или ISNULL(), например

Select
      <b>COALESECE(B.Department,'Total') as Department</b>
    , SUM(CASE datepart(month, [Created on]) WHEN 1 Then 1 ELSE 0 END) AS 'January'
    , SUM(CASE datepart(month, [Created on]) WHEN 2 Then 1 ELSE 0 END) AS 'February'
    , SUM(CASE datepart(month, [Created on]) WHEN 3 Then 1 ELSE 0 END) AS 'March'
    ...
    , SUM(CASE datepart(year, [Created on]) WHEN 2018 Then 1 ELSE 0 END) AS 'YTD'
FROM [Table Cases] A
INNER join [Table Departments] B On A.Department = B.Dept
GROUP BY B.Department WITH ROLLUP 

Когда вы сворачиваетесь по отделам, вам действительно нужно левое соединение?

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