sql >> Database >  >> RDS >> Mysql

Hulp nodig bij het ongedaan maken van het draaien in mysql met meerdere datumkolommen

Ik heb het volgende getest op MySQL 8.0.1:

SELECT GROUP_CONCAT(
  CONCAT(
    'SELECT `Product Type`, ', 
       QUOTE(COLUMN_NAME), ' AS `Date`, ',
       '`', COLUMN_NAME, '` AS `Revenue` ',
    'FROM testing_unpivot'
  ) SEPARATOR ' UNION ALL '
)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'testing_unpivot'
AND COLUMN_NAME <> 'Product Type';

De QUOTE()-functie gebruiken maakt het eenvoudiger, omdat het de noodzaak elimineert om de drievoudige versus viervoudige aanhalingstekens te achterhalen.

Uitgang:

SELECT `Product Type`, '01-31-2016' AS `Date`, `01-31-2016` AS `Revenue` FROM testing_unpivot 
UNION ALL 
SELECT `Product Type`, '02-29-2016' AS `Date`, `02-29-2016` AS `Revenue` FROM testing_unpivot 
UNION ALL 
SELECT `Product Type`, '12-31-2015' AS `Date`, `12-31-2015` AS `Revenue` FROM testing_unpivot

Daarna heb ik gekopieerd en geplakt om die query uit te voeren en kreeg ik deze uitvoer:

+--------------+------------+---------+
| Product Type | Date       | Revenue |
+--------------+------------+---------+
| A            | 01-31-2016 |  400.00 |
| B            | 01-31-2016 |   86.88 |
| C            | 01-31-2016 |  400.00 |
| D            | 01-31-2016 |   55.00 |
| E            | 01-31-2016 |  455.00 |
| A            | 02-29-2016 |   55.00 |
| B            | 02-29-2016 |   55.00 |
| C            | 02-29-2016 |   55.00 |
| D            | 02-29-2016 |   11.00 |
| E            | 02-29-2016 |   22.00 |
| A            | 12-31-2015 |  100.00 |
| B            | 12-31-2015 |    0.00 |
| C            | 12-31-2015 |  200.00 |
| D            | 12-31-2015 |  300.00 |
| E            | 12-31-2015 |  400.00 |
+--------------+------------+---------+

Ik heb zojuist mijn testgegevens geladen met uw eerste drie data aan gegevens.




  1. Is het mogelijk om een ​​door komma's gescheiden kolom op te vragen voor een specifieke waarde?

  2. Mysqldump:Kun je de naam van de tabel waarin je invoegt veranderen?

  3. PostgreSQL - HTML-entiteiten vervangen

  4. Welsprekende groep Door SQLSTATE [42000] te maken met geldige SQL-query in Laravel 5.3