- Usa
LEFT JOIN
per essere sicuro, ottieni l'elenco completo delle aziende anche se non c'è fattura per nessun mese.
- Devi creare n colonne manualmente o usando uno script.
- Puoi semplicemente fare un semplice join, non è richiesta alcuna sottoquery.
- Usa
GROUP BY
per generare un unico record per azienda.
- Usa
CASE WHEN
o IF ELSE
per creare n colonne e selezionare i dati solo dalla riga pertinente. Può essere la prima o qualsiasi riga, quindi usa la funzione di aggregazione per raccogliere i dati anche se si trova in qualsiasi riga per un gruppo, impostando altri valori di riga come NULL
come funzione di aggregazione esclude valori nulli.
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;