- Använd
LEFT JOIN för att vara säker får du en komplett lista över företag även om det inte finns någon faktura för någon månad.
- Du måste skapa n kolumner manuellt eller med ett skript.
- Du kan bara göra en enkel koppling, ingen underfråga krävs.
- Använd
GROUP BY för att generera en enda post per företag.
- Använd
CASE WHEN eller IF ELSE för att skapa n kolumner och bara välja data från relevant rad. Det kan vara första eller vilken rad som helst, så använd aggregatfunktionen för att plocka data även om det finns på valfri rad för en grupp genom att göra andra radvärden som NULL exkludera null-värden som aggregatfunktion.
SELECT
u.display_name,
SUM(IF( bill_month='Jan2k19', package_price, NULL)) as first_bill,
SUM(IF( bill_month='Feb2k19', package_price, NULL)) as second_bill,
SUM(IF( bill_month='Mar2k19', package_price, NULL)) as third_bill
FROM bf_users u
LEFT JOIN bf_monthly_bill b on u.id=b.company_id
GROUP BY u.display_name;