- Verwenden Sie
LEFT JOIN Um sicherzugehen, erhalten Sie eine vollständige Liste der Unternehmen, obwohl für keinen Monat eine Rechnung vorliegt.
- Sie müssen n Spalten manuell oder mit einem Skript erstellen.
- Sie können einfach beitreten, es ist keine Unterabfrage erforderlich.
- Verwenden Sie
GROUP BY um einen einzigen Datensatz pro Unternehmen zu generieren.
- Verwenden Sie
CASE WHEN oder IF ELSE um n Spalten zu erstellen und nur Daten aus der relevanten Zeile auszuwählen. Es kann die erste oder eine beliebige Zeile sein, verwenden Sie also die Aggregatfunktion, um Daten auszuwählen, selbst wenn sie sich in einer beliebigen Zeile für eine Gruppe befinden, indem Sie andere Zeilenwerte als NULL festlegen als Aggregatfunktion Nullwerte ausschließen.
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;