有谁知道使用 activerecord 构建数据透视表的方法,该数据透视表将是远程数据库中立的吗?我试图避免使用 find_by_sql 和数据库特定查询,但对于数据透视表或交叉表查询,我不知道如何以非特定于 MySQL 的方式执行此操作。 IE 我的 mySQL find_by_sql 在 postgresql 数据库上中断。
我找到了http://crosstab.rubyforge.org/这个晦涩的交叉表 gem 可能有用,但我想知道是否其他人有更好的解决方案。
像这样荒谬的例子,它基本上只是翻转 table 上的轴:
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/