sql >> Databasteknik >  >> RDS >> Mysql

Är det möjligt att använda Crosstab/Pivot Query i MySQL?

Du kan använda den här frågan -

SELECT
  supplier_id,
  MAX(IF(date = '2012-01-01', value, NULL)) AS '2012-01-01',
  MAX(IF(date = '2012-01-03', value, NULL)) AS '2012-01-03',
  MAX(IF(date = '2012-05-01', value, NULL)) AS '2012-05-01'
FROM (
  SELECT supplier_id, DATE(date) date, CONCAT(SUM(price), '(', qty, ')') value FROM supplier
    GROUP BY supplier_id, DATE(date)
    ) t
  GROUP BY supplier_id;

+-------------+------------+------------+------------+
| supplier_id | 2012-01-01 | 2012-01-03 | 2012-05-01 |
+-------------+------------+------------+------------+
|           1 | 500.00(2)  | 450.00(10) | NULL       |
|           2 | 400.00(5)  | NULL       | NULL       |
|           3 | NULL       | NULL       | 500.00(1)  |
+-------------+------------+------------+------------+

Det ger resultat du vill ha. Men om du vill göra det dynamiskt, ta en titt på den här artikeln "Automatisera pivottabellsfrågor" - http://www.artfulsoftware.com/infotree/queries.php#523 , eller den här länken - Dynamiska pivottabeller .



  1. Skicka ett kolumnnamn som parameter till en lagrad procedur i mySQL

  2. Vad är sql-anslutningssträngen jag behöver använda för att komma åt localhost\SQLEXPRESS med Windows-autentisering eller SQL-autentisering?

  3. Strängaggregation genom åren i SQL Server

  4. Använda variabler i MySQL UPPDATERING (PHP/MySQL)