我不确定如何标题这个问题,但我正在努力做到以下几点:
我在表格中有以下格式的数据:
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
来做这件事,但除了加入桌子之外我还不可接受的次数,我不确定这是怎么回事。
有什么建议吗?
答案 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语句,也可以将所有列写入同一查询。 但是,无法动态循环遍历可能的列。