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

Buat Tampilan Ringkasan di MySQL dengan memutar baris menjadi jumlah kolom yang dinamis

Anda perlu memutar tabel tetapi mysql tidak memiliki fungsi pivot seperti itu

jadi kita perlu mereplikasi fungsinya

DIEDIT

Select 
  group_concat(
    DISTINCT 
       if(year is null,
          CONCAT('max(if (year is null, state, 0)) as ''NULL'' '),
          CONCAT('max(if (year=''', year, ''', state, 0)) as ''',year, ''' '))
    ) into @sql from tbl join (SELECT @sql:='')a;
set @sql = concat('select company_name, ', @sql, 'from tbl group by company_name;');
PREPARE stmt FROM @sql;
EXECUTE stmt;

Hasil

| COMPANY_NAME | 2008 | 2009 | 2010 | NULL |
--------------------------------------------
|     companyA |    1 |    0 |    0 |    0 |
|     companyB |    0 |    2 |    0 |    0 |
|     companyC |    0 |    0 |    3 |    3 |

SQL FIDDLE

Ada 2 pendekatan untuk memecahkan masalah Anda1. buat kasus untuk setiap tahun, yang tidak mungkin dalam kasus Anda karena kita berurusan dengan tahun2. buat kueri secara dinamis sehingga kami mendapatkan kolom yang tepat sesuai kebutuhan Anda.

Saya telah memberikan solusi sesuai dengan solusi kedua di mana saya membuat kueri dan menyimpannya di @sql variabel. Di biola saya telah mencetak konten @sql sebelum menjalankannya.

select company_name, max(if (year='2008', state, 0)) as '2008' ,max(if (year='2009', state, 0)) as '2009' ,max(if (year='2010', state, 0)) as '2010' ,max(if (year is null, state, 0)) as 'NULL' from tbl group by company_name; 

Untuk informasi lebih lanjut mengenai group_concat() buka tautanGROUP_CONCAT danVARIABEL DEFINISI PENGGUNA

Semoga membantu..



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Desain untuk mewakili check-in dan check-out karyawan

  2. Jumlah koneksi yang optimal di kumpulan koneksi

  3. Android:cara mengunggah gambar di mysql menggunakan php

  4. Saya tidak sengaja mengunci root di MySQL

  5. Penskalaan Otomatis dengan Amazon Aurora Tanpa Server