2009-11-23 70 views
0

有谁知道使用activerecord构建数据透视表的方法,这将远程DB中立?我试图避免使用find_by_sql和数据库特定查询,但对于数据透视表或交叉表查询,我不知道如何以不特定说MySQL的方式来完成此操作。 IE mySQL find_by_sql在postgresql数据库中断开。rails db中立数据透视表或交叉表

我发现http://crosstab.rubyforge.org/这个晦涩的crosstab创业板可能工作,但我想知道如果任何人有更好的解决方案。

例荒谬的东西像这样的,基本上只是翻转桌子上轴:

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

还发现HTTP://api.rubyreports .ORG / – holden 2009-11-24 08:02:11

回答

1

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