Mysql
 sql >> база данни >  >> RDS >> Mysql

Възможно ли е да се използва Crosstab/Pivot Query в MySQL?

Можете да използвате тази заявка -

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)  |
+-------------+------------+------------+------------+

Той дава резултат, който искате. Но ако искате да го правите динамично, вижте тази статия „Автоматизиране на запитвания в централна таблица“ – http://www.artfulsoftware.com/infotree/queries.php#523 , или тази връзка - Динамични централни таблици .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо MySQL дава грешка Не е позволено да върне набор от резултати от функция?

  2. Не мога да използвам MySQL връзка за структура на обект 6

  3. Mysqli не позволява множество заявки?

  4. Създайте тригер, за да изтриете редове, които са на повече от 90 дни

  5. Извличане на брой редове с определена стойност след филтриране на заявка през инструмента за избор на дата