有谁知道一种使用activerecord来构建数据透视表的方法,该方法将是数据库中立的?我试图避免使用find_by_sql和数据库特定的查询,但是对于数据透视表或交叉表查询,我不知道如何以一种不特定于MySQL的方式进行操作。 IE浏览器我的mySQL find_by_sql在PostgreSQL数据库上中断。

我发现http://crosstab.rubyforge.org/这个晦涩的交叉表gem可能有效,但是我想知道是否还有其他人有更好的解决方案。

像这样繁琐的示例,它基本上只是翻转桌子上的轴:

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

最佳答案

这是一个旧的但可能有用的插件:ActiveWarehouse

关于mysql - rails db中性数据透视表或交叉表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1782270/

10-10 09:37
查看更多