Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy w MySQL można używać zapytania krzyżowego/przestawnego?

Możesz użyć tego zapytania -

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

Daje pożądany rezultat. Ale jeśli chcesz robić to dynamicznie, zapoznaj się z tym artykułem „Automatyzacja zapytań do tabel przestawnych” — http://www.artfulsoftware.com/infotree/queries.php#523 lub ten link - Dynamiczne tabele przestawne .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy serwer proxy RDS wpływa na bieżące buforowanie po stronie aplikacji?

  2. Jak użyć wartości ciągu/kolumny jako stałej interwału daty mysql (DZIEŃ, MIESIĄC...)?

  3. Zagnieżdżone relacje z Sequelize

  4. Jak uzyskać surowe, skompilowane zapytanie SQL z wyrażenia SQLAlchemy?

  5. Jak uzyskać listę dat między dwiema datami w zapytaniu wybierającym mysql