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