- Použijte
LEFT JOIN
abyste se ujistili, že získáte úplný seznam společností, i když za žádný měsíc není účtován žádný účet.
- N sloupců musíte vytvořit ručně nebo pomocí skriptu.
- Můžete se jednoduše připojit, není potřeba žádný poddotaz.
- Použijte
GROUP BY
vygenerovat jeden záznam na společnost.
- Použijte
CASE WHEN
nebo IF ELSE
vytvořit n sloupců a vybrat data pouze z příslušného řádku. Může to být první nebo libovolný řádek, takže použijte agregační funkci k výběru dat, i když jsou na jakémkoli řádku pro skupinu, a to tak, že ostatní hodnoty řádku nastavíte jako NULL
jako agregační funkce vylučují hodnoty 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;