I MySQL kan du konstruere tabellen ved hjælp af 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;
Bemærkninger:
- Jeg har ændret
name
tilmode
så kolonnen med samme information har samme navn. group by
nøglen skal være fra den første navn, ikke det andet (det erm.mode
i stedet forp.mode
).- Hvis du vil have
0
i stedet forNULL
, og brug dereftercoalesce(sum(p.amount), 0)
. - Du vil måske overveje en referencetabel, der indeholder tilstandsværdierne.