Le ROLLUP
place un null
dans la ligne des totaux, donc si vous souhaitez remplacer cela, je suggérerais de prendre votre requête existante et de la placer dans une sous-requête, puis d'utiliser un CASE
sur le NAME
pour remplacer le null
à Total
.
Votre code ressemblera à ceci :
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
Si vous n'encapsulez pas votre requête dans une sous-requête, vous pouvez utiliser quelque chose comme ceci :
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