- Sử dụng
LEFT JOIN
để đảm bảo rằng bạn có được danh sách đầy đủ các công ty mặc dù không có hóa đơn cho bất kỳ tháng nào.
- Bạn phải tạo n cột theo cách thủ công hoặc sử dụng tập lệnh.
- Bạn chỉ có thể thực hiện phép nối đơn giản, không cần truy vấn phụ.
- Sử dụng
GROUP BY
để tạo một bản ghi cho mỗi công ty.
- Sử dụng
CASE WHEN
hoặc IF ELSE
để tạo n cột và chỉ chọn dữ liệu từ hàng liên quan. Nó có thể là hàng đầu tiên hoặc bất kỳ hàng nào, vì vậy hãy sử dụng hàm tổng hợp để chọn dữ liệu ngay cả khi nó nằm ở bất kỳ hàng nào cho một nhóm bằng cách đặt các giá trị hàng khác là NULL
vì hàm tổng hợp loại trừ các giá trị rỗng.
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;