Как вариант:
- агрегировать и разделить по филиалам в PIVOT
- там же сразу собрать промежуточные итоги
- перевернуть таблицу обратно UNPIVOT
Простой пример:
-- автор не указал исходную структуру таблицы
CREATE TABLE testTable (
BranchID VARCHAR(1) NOT NULL
);
-- предположу что идет одна запись на продажу
INSERT INTO testTable VALUES ('A');
INSERT INTO testTable VALUES ('A');
INSERT INTO testTable VALUES ('A');
INSERT INTO testTable VALUES ('B');
INSERT INTO testTable VALUES ('B');
INSERT INTO testTable VALUES ('C');
INSERT INTO testTable VALUES ('D');
INSERT INTO testTable VALUES ('D');
INSERT INTO testTable VALUES ('D');
INSERT INTO testTable VALUES ('E');
INSERT INTO testTable VALUES ('E');
INSERT INTO testTable VALUES ('F');
INSERT INTO testTable VALUES ('F');
INSERT INTO testTable VALUES ('F');
-- выборка
SELECT
ROW_NUMBER() OVER (ORDER BY 1) AS "№",
u.testCol AS "Филиал",
u.value AS "Продажи"
FROM
(
-- промежуточные итоги
SELECT
p."'A'" AS "A",
p."'B'" AS "B",
p."'A'" + p."'B'" AS "A + B",
p."'C'" AS "C",
p."'D'" AS "D",
p."'C'" + p."'D'" AS "C + D",
p."'E'" AS "E",
p."'F'" AS "F",
p."'E'" + p."'F'" AS "E + F",
p."'C'" + p."'D'" + p."'E'" + p."'F'" AS "C + D + E + F",
p."'A'" + p."'B'" + p."'C'" + p."'D'" + p."'E'" + p."'F'" AS "A + B + C + D + E + F"
FROM
testTable
-- переворачиваем
PIVOT (
-- количество продаж
COUNT(BranchID)
-- отдельно по филиалам
FOR BranchID
IN ('A', 'B', 'C', 'D', 'E', 'F')
) p
) t
-- убираем переворот
UNPIVOT (
VALUE
FOR testCol
IN (
("A") AS 'A',
("B") AS 'B',
("A + B") AS 'A + B',
("C") AS 'C',
("D") AS 'D',
("C + D") AS 'C + D',
("E") AS 'E',
("F") AS 'F',
("E + F") AS 'E + F',
("C + D + E + F") AS 'C + D + E + F',
("A + B + C + D + E + F") AS 'A + B + C + D + E + F'
)
) u