No MySQL, você pode construir a tabela usando
union all
:select m.mode, SUM(p.amount)
from (select 'Cash' as mode union all
select 'Card' union all
select 'Cheque' union all
select 'Bank'
) m left join
payments p
on m.mode = p.mode
group by m.mode;
Notas:
- Alterei
name
paramode
então a coluna com a mesma informação tem o mesmo nome. - O
group by
chave precisa ser do primeiro nome, não o segundo (isto ém.mode
em vez dep.mode
). - Se você quiser
0
em vez deNULL
, então usecoalesce(sum(p.amount), 0)
. - Convém considerar uma tabela de referência que contenha os valores de modo.