@samflexx, I have simulated your situation and have made a solution that I think matches your requirement. Since you said that
total records belonging to each division
the obvious idea that cropped up is to use the ROLLUP function. I am presenting the solution. Let us know if it has helped you
;WITH CTE AS(
SELECT
1 AS EMPNUM
,'File1'AS FILENAME
,'Name1' AS EMPNAME
,'Division1' AS Division UNION ALL
SELECT
2 AS EMPNUM
,'File2'AS FILENAME
,'Name2' AS EMPNAME
,'Division2' AS Division UNION ALL
SELECT
3 AS EMPNUM
,'File12'AS FILENAME
,'Name12' AS EMPNAME
,'Division1' AS Division UNION ALL
SELECT
4 AS EMPNUM
,'File14'AS FILENAME
,'Name14' AS EMPNAME
,'Division1' AS Division UNION ALL
SELECT
5 AS EMPNUM
,'File21'AS FILENAME
,'Name21' AS EMPNAME
,'Division2' AS Division UNION ALL
SELECT
6 AS EMPNUM
,'File3'AS FILENAME
,'Name3' AS EMPNAME
,'Division3' AS Division) -- table create and data insertion part
-- Query starts
SELECT
X.*
FROM(
SELECT
EMPNUM = ISNULL(CAST(t.EMPNUM AS VARCHAR(10)), ' ')
,FILENAME = ISNULL(CAST(t.FILENAME AS VARCHAR(10)), ' ')
,EMPNAME = ISNULL(CAST(t.EMPNAME AS VARCHAR(10)), ' ')
,Division = CASE
WHEN t.Division IS NULL AND t.EMPNUM IS NULL THEN 'Total :-'
WHEN t.EMPNUM IS NULL THEN 'Total ' + t.Division + ' Count :-'
ELSE t.Division END
,DivisionCount = COUNT(t.Division)
FROM CTE t
GROUP BY ROLLUP(t.Division,t.EMPNUM,t.EMPNAME,t.FILENAME))X
WHERE (LEN(X.FILENAME) > 0 AND LEN(X.EMPNAME) > 0)
OR (LEN(X.FILENAME) = 0 AND LEN(X.EMPNAME) = 0 AND LEN(X.EMPNUM) = 0)
The output
EMPNUM FILENAME EMPNAME Division DivisionCount
1 File1 Name1 Division1 1
3 File12 Name12 Division1 1
4 File14 Name14 Division1 1
Total Division1 Count :- 3
2 File2 Name2 Division2 1
5 File21 Name21 Division2 1
Total Division2 Count :- 2
6 File3 Name3 Division3 1
Total Division3 Count :- 1
Total :- 6