I MySQL kan du konstruera tabellen med 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;
Anmärkningar:
- Jag ändrade
name
tillmode
så kolumnen med samma information har samma namn. - Gruppen
group by
nyckeln måste vara från den första namn, inte den andra (det ärm.mode
istället förp.mode
). - Om du vill ha
0
istället förNULL
, använd sedancoalesce(sum(p.amount), 0)
. - Du kanske vill överväga en referenstabell som innehåller lägesvärdena.