En MySQL, puede construir la tabla 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:
- Cambié
name
almode
por lo que la columna con la misma información tiene el mismo nombre. - El
group by
la clave debe ser del primero nombre, no el segundo (que esm.mode
en lugar dep.mode
). - Si desea
0
en lugar deNULL
, luego usecoalesce(sum(p.amount), 0)
. - Es posible que desee considerar una tabla de referencia que contenga los valores de moda.