Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tìm nạp dữ liệu 3 tháng trước dưới dạng các cột riêng biệt chứ không phải hàng cho mỗi người dùng

  1. 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.
  2. Bạn phải tạo n cột theo cách thủ công hoặc sử dụng tập lệnh.
  3. Bạn chỉ có thể thực hiện phép nối đơn giản, không cần truy vấn phụ.
  4. Sử dụng GROUP BY để tạo một bản ghi cho mỗi công ty.
  5. 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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL đếm kết quả truy vấn phức tạp?

  2. Đếm các thay đổi trong dòng thời gian với MySQL

  3. Cách thực thi lệnh SQL với các tham số trong tập lệnh bash

  4. Cách hợp nhất bảng trong MySQL

  5. Làm thế nào các bảng innodb bị khóa khi kích hoạt ON INSERT được xử lý?