In MySQL kun je de tabel maken met 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;
Opmerkingen:
- Ik heb
name
gewijzigd naarmode
dus de kolom met dezelfde informatie heeft dezelfde naam. - De
group by
sleutel moet van de eerste . zijn naam, niet de tweede (dat ism.mode
in plaats vanp.mode
). - Als je
0
wilt hebben in plaats vanNULL
, gebruik dancoalesce(sum(p.amount), 0)
. - Je zou een referentietabel kunnen overwegen die de moduswaarden bevat.