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

Tạo Dạng xem Tóm tắt trong MySQL bằng cách xoay hàng thành số cột động

Bạn cần xoay bảng nhưng mysql không có bất kỳ chức năng nào như vậy của pivot

vì vậy chúng tôi cần tái tạo chức năng của nó

ĐÃ CHỈNH SỬA

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;

Kết quả

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

SQL FIDDLE

Có 2 cách tiếp cận để giải quyết vấn đề của bạn1. tạo trường hợp cho mỗi năm, điều này không thể thực hiện được trong trường hợp của bạn vì chúng tôi đang giải quyết năm 2. tạo truy vấn động để chúng tôi nhận được các cột phù hợp theo nhu cầu của bạn.

Tôi đã đưa ra giải pháp theo giải pháp thứ hai trong đó tôi đang tạo truy vấn và lưu trữ nó trong @sql Biến đổi. Trong máy in, tôi đã in nội dung của @sql trước khi thực hiện nó.

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; 

Để biết thêm thông tin về group_concat() đi qua liên kết GROUP_CONCAT BIẾN SỐ ĐỊNH NGHĨA CỦA NGƯỜI DÙNG

Hy vọng điều này sẽ giúp ..



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có gì sai với truy vấn SQL Fiddle của tôi?

  2. Hiệu suất MySQL:THAM GIA BẬT so với Ở ĐÂU

  3. Sự khác biệt giữa lược đồ / cơ sở dữ liệu trong MySQL

  4. Kết quả tìm kiếm từ khóa và xếp hạng

  5. Di chuyển từ MySQL sang PostgreSQL trên Linux (Kubuntu)