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