Из звуков вопроса кажется, что то, что задают, является выражением слоев итогов.
Ваш запрос работает хорошо и выполняет все необходимые операции, кроме общего для отрасли.
В приведенном ниже запросе используется «свертка», которая позволяет генерировать иерархические группировки на основе столбцов, идущих слева направо. Таким образом, вы получите общую сумму по всем отраслям, итоговую сумму за все годы по компании и итоговую сумму за все месяцы в году по компании.
declare @sales table
(
[Period] date,
[Company] nvarchar(50),
[Metric] nvarchar(50),
[Values] float
);
insert @sales ([Period], [Company], [Metric], [Values])
values
('01-01-2018', 'CompA', 'Sales Vol', 72947.30664),
('02-01-2018', 'CompA', 'Sales Vol', 21553.65941),
('03-01-2018', 'CompA', 'Sales Vol', 777.6831962),
('04-01-2018', 'CompA', 'Sales Vol', 34871.11234),
('05-01-2018', 'CompA', 'Sales Vol', 42598.06526);
SELECT coalesce(Company,'Industry') as Company, coalesce(cast(YEAR([Period]) as nvarchar(50)), 'All Years') AS Year,
coalesce(cast(MONTH([Period])as nvarchar(50)),'All Months') as month, coalesce(sum([values]),0) as sales
FROM @sales
group by rollup (company, year([period]), month([period]))