mysql - Rails db 中性数据透视表或交叉表

标签 mysql ruby-on-rails postgresql activerecord pivot

有谁知道使用 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/

相关文章:

sql - 在 postgresql 中更改 `*_id_seq` 表的值

php - MySQL ON 重复键语法错误

mysql - 如何使用 strftime 格式化查询日期

ruby-on-rails - Node Sass 尚不支持您当前的环境 : OS X Unsupported architecture (arm64) with Unsupported runtime (102)

sql - postgresql函数错误: column name does not exist

postgresql - Golang结构的Postgres数组

php - 如何将数据库表头信息导入 CSV 文件

php - MYSQL 在重型数据库中的搜索速度

PHP将嵌套的json插入到mySQl中

ruby-on-rails - rake 分贝 :test:prepare in Rails 3 app fails with file not found