- Gunakan
LEFT JOIN
untuk memastikan, Anda mendapatkan daftar lengkap perusahaan meskipun tidak ada tagihan untuk bulan apa pun.
- Anda harus membuat n kolom secara manual atau menggunakan skrip.
- Anda cukup melakukan join sederhana, tidak perlu subquery.
- Gunakan
GROUP BY
untuk menghasilkan satu rekaman per perusahaan.
- Gunakan
CASE WHEN
atau IF ELSE
untuk membuat n kolom dan mengambil data dari baris yang relevan saja. Itu bisa menjadi baris pertama atau mana saja, jadi gunakan fungsi agregat untuk mengambil data bahkan di baris mana pun untuk grup dengan membuat nilai baris lain sebagai NULL
sebagai fungsi agregat mengecualikan nilai nol.
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;