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

Potřebujete převést sloupce na řádky v MYSQL

Níže uvedené řešení vám může pomoci vyřešit váš problém, musíte provést nějaké změny podle struktury vaší tabulky.

Pro toto řešení musíte vytvořit uloženou proceduru.

Pokud je toto struktura vaší tabulky:

CREATE TABLE `school` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(500) DEFAULT NULL,
  `value` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS=1;

Níže uvedené řešení funguje, pokud výše je struktura vaší tabulky.

   SET SESSION group_concat_max_len = (2056 * 2056);

SET @sql = NULL;

SELECT GROUP_CONCAT(DISTINCT
             CONCAT(
               'MAX(CASE WHEN school.name ="',m.name,'"'
                                ' THEN school.value END)"',m.name , '"'))
                                INTO @sql  
                                            from school as m;

SET @sql = CONCAT('SELECT value,',@sql,
                  ' FROM school');


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

Proveďte změny podle struktury tabulky.

Toto řešení je také užitečné pro více tabulek, doufám, že vám to pomůže vyřešit váš problém.




  1. Automatizace Načítání čísla verze ze souborů .Dtsx

  2. Jak předat parametr sql do IN()?

  3. Sestavení problému cx_Oracle - libclntsh.so.11.1 => nenalezeno

  4. Jak importovat databázi SQL Server do Accessu 2016