我需要在 sqlite 上复制 PostgreSQL 的 generate_series()
函数。我有一个表格,我需要根据 2 个字段计算未来的付款:
Date Period
----------------
1-1-2000 60
1-2-2000 40
1-3-2000 50
因此,从第一行开始,我需要从 1-1-2000 开始构建 60 个日期。
我读了
如何生成两个日期之间的所有日期
并发现sqlite有CTE!但无法弄清楚如何构建查询。我找到的示例具有硬编码的值。
首先,您应该避免提供的日期格式。使用受支持的之一(检查SQLite日期和时间函数)。
CREATE TABLE source_table (Date, Period);
INSERT INTO source_table VALUES("2000-01-01",60),("2000-02-01",40),("2000-03-01",50);
WITH dates AS (
SELECT * FROM source_table
UNION -- use UNION ALL if repeated dates are desired
SELECT DATE(JULIANDAY(Date)+1), Period-1 FROM dates WHERE Period>0
) SELECT Date FROM dates ORDER BY Date;