sql >> Databasteknik >  >> RDS >> Mysql

Mysql MySQL eller PHP Förvandla rader till två kolumner dynamiskt

Det fungerar på samma sätt som FS_amount , lägg bara till de nya kolumnerna i din kod som genererar de dynamiska kolumnerna:

  SELECT GROUP_CONCAT(DISTINCT CONCAT(
      'MAX(IF(month = ''',
      month,
      ''' and year(date) = ',
      year(date),
      ', FS_amount, NULL)) AS `',
      CONCAT('FA_',month),
      '_',
      year(date),
      '`, ', 
      'MAX(IF(month = ''',
      month,
      ''' and year(date) = ',
      year(date),
      ', AS_amount, NULL)) AS `',
      CONCAT('AS_',month),
      '_',
      year(date),
      '`'      
      )
    order by date
  ) INTO @sql
  FROM tmp_results;

Du bör titta på koden som satserna skapar (t.ex. genom att tillfälligt lägga till en select @sql; ), även om det borde vara ganska enkelt att lägga till ännu fler kolumner om du skulle behöva dem.




  1. MySQL:Hur man tillåter fjärranslutning till mysql

  2. MySQL-lösenordsproblem (mac OS X Lion)

  3. CTE-fel:Typerna matchar inte mellan ankaret och den rekursiva delen

  4. MySQL - CONCAT - Finns det något sätt att sammanfoga en sträng och använda den som en variabel?