mysql - SQL简化特色功能?或数据透视表?

标签 mysql sql pivot aggregate-functions

我有一张包含一堆日期和价格的表格:

房间名称、价格、预订日期等

我可以像这样转换它:(本质上翻转列)

SELECT availables.name, rooms.id,
  MAX(IF(to_days(availables.bookdate) - to_days('2009-06-13') = 0, availables.price, '')) AS day1,
  MAX(IF(to_days(availables.bookdate) - to_days('2009-06-13') = 1, availables.price, '')) AS day2,
  MAX(IF(to_days(availables.bookdate) - to_days('2009-06-13') = 2, availables.price, '')) AS day3,
  MAX(IF(to_days(availables.bookdate) - to_days('2009-06-13') = 3, availables.price, '')) AS day4,
  MAX(IF(to_days(availables.bookdate) - to_days('2009-06-13') = 4, availables.price, '')) AS day5,
  MAX(IF(to_days(availables.bookdate) - to_days('2009-06-13') = 5, availables.price, '')) AS day6,
  MAX(IF(to_days(availables.bookdate) - to_days('2009-06-13') = 6, availables.price, '')) AS day7,
AVG(availables.price),SUM(availables.price)
FROM `availables`
INNER JOIN rooms
ON availables.room_id=rooms.id
WHERE availables.room_id = '18382'
GROUP BY availables.name

这完美地工作并产生这样的结果:

name    id  day1    day2    day3    day4    day5    day6    day7    AVG(availables.price)   SUM(availables.price)
Bed     18382   23.00   21.00   21.00   21.00   21.00   21.00       21.571429   151.00

但是因为我不知道天数,我该如何简化它呢?可能是1或7?有什么想法吗?

最佳答案

看看this answer以及它链接到的内容。

关于mysql - SQL简化特色功能?或数据透视表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/978487/

相关文章:

asp.net - 使用 Mysql Connector 无需安装 .Net

mysql - SQL - 检查并更新表中的新行?

mysql - 在mysql中查找所有用户购买的所有单个项目

php剥离html标签及其数据并插入到mysql中

php - MySQL - 触发器调用两次导致死锁

mysql根据数字更新列

sql - SQL Server 中多列的聚合函数

sql - 如何选择 '%@Param%' 之类的位置

uwp - UWP 中的响应式 PivotItem

sql - MS SQL : alter indexed view by including additional columns from new table