- 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;