In MySQL, puoi costruire la tabella 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;
Note:
- Ho cambiato
name
inmode
quindi la colonna con le stesse informazioni ha lo stesso nome. - Il
group by
la chiave deve provenire dalla prima nome, non il secondo (ovverom.mode
invece dip.mode
). - Se vuoi
0
invece diNULL
, quindi usacoalesce(sum(p.amount), 0)
. - Potresti prendere in considerazione una tabella di riferimento che contenga i valori della modalità.