- Utilice
LEFT JOIN
para asegurarse de obtener una lista completa de las empresas aunque no haya ninguna factura para ningún mes.
- Tienes que crear n columnas manualmente o usando un script.
- Puede simplemente hacer una unión simple, no se requiere subconsulta.
- Usar
GROUP BY
para generar un único registro por empresa.
- Utilice
CASE WHEN
o IF ELSE
para crear n columnas y seleccionar datos solo de la fila relevante. Puede ser la primera o cualquier fila, así que use la función de agregado para seleccionar datos, incluso si están en cualquier fila para un grupo, haciendo que los valores de otras filas sean NULL
como función agregada excluye 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;