创建用于构建其列是从另一个表的行派生的表的迁移

时间:2014-08-02 12:31:10

标签: sql ruby-on-rails sqlite pivot

有没有办法(除手动键入迁移外)在Rails中创建一个新表,其中列名是从另一个表的列值派生的?这将是一个宽表(约100列),所以我真的想避免手动这样做。

现有表格如下:

 -----------
| nameCol |
-----------
| A       |
| A       |
| B       |
| C       |
-----------

我想创建另一个看起来像这样的表:

| pk | A | B | C |

目前正在使用sqlite。

1 个答案:

答案 0 :(得分:0)

我会使用group_concat运行查询,如 -

select group_concat(distinct namecol) as namecols
from tbl

http://sqlfiddle.com/#!5/57f05/3/0

然后将结果导入Excel并将文本用于列:

enter image description here

使用逗号作为分隔符。

然后在第一列名称下面(在create table语句之间)编写一个公式,如下所示:

enter image description here

将公式复制到最后一列。从最后一个单元格中的公式中删除逗号,因为它是列表中的最后一列。将单元格从左向右复制,表示create table语句,并使用它来创建表。

示例excel文件,链接有效期为2天:

example.xlsx: http://shwivel.synology.me:5000/fbsharing/xE336ePi 截止日期:2014-08-04