- Użyj
LEFT JOIN
aby się upewnić, otrzymasz pełną listę firm, nawet jeśli nie ma rachunku za żaden miesiąc.
- Musisz utworzyć n kolumn ręcznie lub za pomocą skryptu.
- Możesz po prostu wykonać proste dołączenie, nie jest wymagane żadne podzapytanie.
- Użyj
GROUP BY
do generowania jednego rekordu na firmę.
- Użyj
CASE WHEN
lub IF ELSE
aby utworzyć n kolumn i wybrać dane tylko z odpowiedniego wiersza. Może to być pierwszy lub dowolny wiersz, więc użyj funkcji agregującej, aby wybrać dane, nawet jeśli znajdują się w dowolnym wierszu dla grupy, ustawiając inne wartości wiersza jako NULL
jako funkcja agregująca wykluczaj wartości null.
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;