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

Meja Pivot Dengan 3 meja

Sepertinya Anda mungkin memiliki jumlah biaya yang tidak diketahui yang ingin Anda ubah menjadi kolom, jika demikian, Anda akan ingin menggunakan pernyataan yang telah disiapkan untuk menanyakan hal ini:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when f.fee_name = ''',
      f.fee_name,
      ''' then f.fee_amount else 0 end) AS `',
      f.fee_name, '`'
    )
  ) INTO @sql
FROM fee f;

SET @sql = CONCAT('SELECT s.school_id, ', @sql, '
                    , sum(f.fee_amount) as Total
                  FROM students s
                  LEFT JOIN stud_fee sf
                    on s.id = sf.stud_id
                  LEFT JOIN fee f
                    on sf.fee_id = f.id
                   GROUP BY s.school_id');


PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Lihat SQL Fiddle dengan Demo



  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 menginstal dan memuat database pada skrip Inno Setup

  2. Bagaimana ekstrapolasi data dengan Mysql dan dimasukkan ke dalam array?

  3. Pernyataan SQL untuk mendapatkan semua pelanggan tanpa pesanan

  4. Pembaruan Pembersihan untuk Entri Duplikat

  5. SELECT LAST_INSERT_ID() berfungsi di Direct MySQL Query tetapi tidak sebentar-sebentar PHP QUERY