在没有定义过程的情况下使用SQL执行前缀计算

时间:2010-10-13 14:08:11

标签: sql sqlite prefix

我有一个包含整数列的表 - 我需要一种方法在另一个表中生成此列的“前缀”。

例如

我有1个,0个,0个,0个,0个,0个,0个,0个作为输入
我需要1,1,1,1,2,2,3,3,3作为输出

这需要在SQLite的SQL方言中完成,不可能有用户定义的函数或存储过程。

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

select value,
(select sum(t2.value) from table t2 where t2.id <= t1.id ) as accumulated
from table t1

来自:SQLite: accumulator (sum) column in a SELECT statement

答案 1 :(得分:1)

因此,要从input表插入output表,您需要进行以下查询:

INSERT INTO output
SELECT id,
(SELECT sum(i1.value) FROM input AS i1 WHERE i1.rowid  <= i2.rowid) as VALUE
FROM input AS i2