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

Sử dụng @DECLARE trong MYSQL 5.1

MySQL không có pivot vì vậy bạn sẽ phải chuyển dữ liệu từ các hàng thành cột bằng cách sử dụng một hàm tổng hợp với CASE biểu thức:

select 
  sum(case when tt.type = 'UnitTest' then 1 else 0 end) UnitTest,
  sum(case when tt.type = 'WebTest' then 1 else 0 end) WebTest
from test t
inner join test_type tt
  on t.test_type = tt.id

Xem SQL Fiddle with Demo .

Nếu bạn sắp có một số types không xác định mà bạn muốn chuyển đổi thành cột, bạn có thể sử dụng một câu lệnh đã chuẩn bị để tạo SQL động:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'sum(CASE WHEN tt.type = ''',
      type,
      ''' THEN 1 else 0 END) AS `',
      type, '`'
    )
  ) INTO @sql
FROM test_type;

SET @sql 
  = CONCAT('SELECT ', @sql, ' 
            from test t
            inner join test_type tt
              on t.test_type = tt.id');

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

Xem SQL Fiddle with 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. java.lang.ClassNotFoundException:com.mysql.jdbc.Driver trong thời gian chạy (eclipse / maven / tomcat)

  2. Sử dụng SSIS để truy vấn truy vấn nguồn ADO .NET chuyển các tham số từ SQL Server

  3. MySQL kết hợp bất hợp pháp các đối chiếu

  4. Cần trợ giúp về lỗi perl khi sử dụng DBD ::mysql

  5. MySQL:Không thể tạo bảng (errno:150)