Sqlite选择进入矩阵

时间:2014-08-12 17:28:41

标签: sql sqlite join insert

我不确定如何标题这个问题,但我正在努力做到以下几点:

我在表格中有以下格式的数据:

id         value      date
--         -----       --------
123        100        2014-08-01
124        101        2014-08-01
234        100.5      2014-08-02
...

它的行数约为10万行,为期两周。我一直在尝试做的是创建一个排序矩阵,其中第一列是此期间存在的唯一ID列表,然后为每个日期添加一列,填充value字段,如果给定id上的特定date没有值,请填写NULL

id      2014-08-01    2014-08-02   ...
-----   ----------    ---------    -----
123     100           105
124     101           NULL
...

我正在使用SQLite,我的第一个方法是创建一个临时表,然后我想我可以填充。创建表格并使用一组唯一的id填充第一列后,我尝试了以下代码(注意:我使用temp_table中的日期字符串命名列):

INSERT OR REPLACE INTO temp_table ("2014-08-01") SELECT my_table.value
FROM my_table LEFT OUTER JOIN temp_table ON temp_table.id = my_table.id
WHERE my_table.date = '2014-08-01'

不幸的是,这似乎只是向我的表中添加新行,而不是替换为除id之外的现有空行。我也考虑过如何使用复杂的SELECT来做这件事,但除了加入桌子之外我还不可接受的次数,我不确定这是怎么回事。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

要更新到位的行,请使用UPDATE:

UPDATE temp_table
SET "2014-08-01" = (SELECT value
                    FROM my_table
                    WHERE id = temp_table.id
                      AND date = '2014-08-01')

您可以使用多个UPDATE语句,也可以将所有列写入同一查询。 但是,无法动态循环遍历可能的列。