Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dynamiczny pivot MySQL

SELECT id,SUM(CASE WHEN Item='Chocolate' THEN Purchased END) as Chocolate_Purchased,
SUM(CASE WHEN Item='Biscuit' THEN Purchased END) as Biscuit_Purchased,
SUM(CASE WHEN Item='Jelly' THEN Purchased END) Jelly_Purchased,
SUM(CASE WHEN Item='Mile' THEN Purchased END) as Mile_Purchased 
GROUP BY id

Oto wersja dynamiczna

SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
    CONCAT(
      'SUM(IF(t.item = ''',
      item,
      ''', t.purchased, 0)) AS ',
      item
    )
   )INTO @sql
FROM t;

SET @sql = CONCAT('SELECT id,
                     ', @sql, ' 
                   FROM t               
                   GROUP BY id');

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

Skrzydełka




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lokalna replika bazy danych RDS

  2. spraw, aby wszystkie liczby całkowite z automatycznym przyrostem miały taką samą liczbę cyfr z wiodącymi zerami

  3. Data MySQL czy czas PHP?

  4. Czy używanie tabeli głównej dla kolumn współdzielonych jest dobrą praktyką dla całej bazy danych?

  5. PHP przechowuje hasło w ciasteczku