- Use
LEFT JOIN
para ter certeza, você obtém uma lista completa de empresas, mesmo que não haja nenhuma fatura para nenhum mês.
- Você precisa criar n colunas manualmente ou usando um script.
- Você pode simplesmente fazer a junção simples, nenhuma subconsulta é necessária.
- Usar
GROUP BY
para gerar um único registro por empresa.
- Use
CASE WHEN
ou IF ELSE
para criar n colunas e selecionar dados apenas da linha relevante. Pode ser a primeira ou qualquer linha, portanto, use a função de agregação para selecionar dados, mesmo que esteja em qualquer linha de um grupo, tornando outros valores de linha como NULL
como função agregada exclui valores nulos.
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;