Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Ambil data 3 bulan terakhir sebagai kolom terpisah bukan baris untuk setiap pengguna

  1. Gunakan LEFT JOIN untuk memastikan, Anda mendapatkan daftar lengkap perusahaan meskipun tidak ada tagihan untuk bulan apa pun.
  2. Anda harus membuat n kolom secara manual atau menggunakan skrip.
  3. Anda cukup melakukan join sederhana, tidak perlu subquery.
  4. Gunakan GROUP BY untuk menghasilkan satu rekaman per perusahaan.
  5. 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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah nama create_at Laravel dan updated_at

  2. Tampilkan pesan kesalahan SQL

  3. Ubah tabel atau setel ulang kenaikan otomatis menggunakan CDbMigration

  4. Klausa GROUP BY dalam kueri di MySQL membuat koneksi saya mogok hanya dalam beberapa kasus

  5. MYSQL Query &PHP - Query mengembalikan nihil ke Aplikasi iOS