sql >> Databáze >  >> RDS >> Mysql

Dynamická kontingenční tabulka MySQL

Protože hodnoty jsou v int děláte z nich názvy sloupců, hodnoty musíte zabalit do zpětného zaškrtnutí

SQL bude vypadat takto:

max(case when user_id = 1 then score end) as `1`

Úplný dotaz bude:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when user_id = ''',
      user_id,
      ''' then score end) AS `',
      user_id, '`'
    )
  ) INTO @sql
FROM  measure2;

SET @sql = CONCAT('SELECT inspection_date, ', @sql, ' 
                  FROM measure2 
                  GROUP BY inspection_date');

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

Viz SQL Fiddle s ukázkou




  1. Vytvořte propojený server mezi dvěma kontejnery Docker se systémem SQL Server (příklad T-SQL)

  2. Konfigurace vysoké dostupnosti pro uzly ClusterControl pomocí CMON HA

  3. kurzor:pin S počkejte na X

  4. Služba DMS pro migraci databáze AWS