результат нужен в такой форме, но что бы не искользовал два раза CTE с результатом поиска
with cteSearchResult
as
(
select 1 as a1, 1 as a2, 1 as a3, 1 as b
union all
select 1 as a1, 2 as a2, 1 as a3, 1 as b
union all
select 1 as a1, 2 as a2, 1 as a3, 2 as b
union all
select 2 as a1, 1 as a2, 2 as a3, 3 as b
union all
select 2 as a1, 1 as a2, 1 as a3, 1 as b
),
cteTotalCount as
(
select count(1) as cnt,
count(case b when 1 then 1 end) as cnt1,
count(case b when 2 then 1 end) as cnt2,
count(case b when 3 then 1 end) as cnt3
from cteSearchResult
)
select a1,
a2,
a3,
'grouping' as cntType,
count(1) as cnt
from cteSearchResult r
group
by grouping sets
(
--(),
a1,
(a2, a3)
)
union all
select null, null, null,
cntType,
cntP
from cteTotalCount
unpivot (cntP for cntType in (cnt, cnt1, cnt2, cnt3)) as unpvt