ROLLUP
umieszcza null
w wierszu sum, więc jeśli chcesz to zastąpić, sugeruję wzięcie istniejącego zapytania i umieszczenie go w podzapytaniu, a następnie użycie CASE
na NAME
zastąpić null
do Total
.
Twój kod będzie podobny do tego:
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
Jeśli nie zapakujesz zapytania w podzapytanie, możesz użyć czegoś takiego:
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