ROLLUP
umístí null
v řádku součtů, takže pokud to chcete nahradit, navrhoval bych vzít váš stávající dotaz a umístit jej do poddotazu a poté použít CASE
na NAME
nahradit null
na Total
.
Váš kód bude podobný tomuto:
select
case when name is null then 'Total' else name end Name,
sum(Activated) Activated,
sum(Deactivated) Deactivated
from
(
select
case
when (upper(m.email) like '%max.com') then 'MAX'
when (upper(m.email) like '%tax.com') then 'TAX'
else 'OTHER'
end Name,
SUM(case when substring(convert(varchar(8),n.created_on,112),1,6) = '201209' then 1 else 0 end) 'Activated',
SUM(case when substring(convert(varchar(8),m.LastLockoutDate,112),1,6)='201209' then 1 else 0 end) 'Deactivated'
from membership.user_details d
inner join membership.aspnet_membership m
on m.userid = d.userid
inner join membership.user_notes n
on n.userid = d.userid
and n.CREATED_ON = (select min(created_on)
from membership.user_notes
where userid = n.userid
and note = 'received.')
where approved = 1
group by case when (upper(m.email) like '%max.com') then 'MAX'
when (upper(m.email) like '%tax.com') then 'TAX'
else 'OTHER' end
) src
group by name with rollup
Pokud svůj dotaz nezabalíte do poddotazu, můžete použít něco takového:
select
case when
(case
when (upper(email) like '%max.com') then 'MAX'
when (upper(email) like '%tax.com') then 'TAX'
else 'OTHER'
end) is null then 'Total'
else case
when (upper(email) like '%max.com') then 'MAX'
when (upper(email) like '%tax.com') then 'TAX'
else 'OTHER'
end end Name,
SUM(case when substring(convert(varchar(8),n.created_on,112),1,6) = '201209' then 1 else 0 end) 'Activated',
SUM(case when substring(convert(varchar(8),m.LastLockoutDate,112),1,6)='201209' then 1 else 0 end) 'Deactivated'
from membership.user_details d
inner join membership.aspnet_membership m
on m.userid = d.userid
inner join membership.user_notes n
on n.userid = d.userid
and n.CREATED_ON = (select min(created_on)
from membership.user_notes
where userid = n.userid
and note = 'received.')
where approved = 1
group by case when (upper(m.email) like '%max.com') then 'MAX'
when (upper(m.email) like '%tax.com') then 'TAX'
else 'OTHER' end with rollup