2017-10-10 122 views
0

我需要在PostgreSQL的generate_series()函数的sqlite上重复一次。我有一个表,我需要计算基于2场的未来付款:使用CTE在Sqlite上生成日期

Date  Period 
---------------- 
1-1-2000 60 
1-2-2000 40 
1-3-2000 50 

所以,从第一行,我需要建立60个日期始于2000年1月1日。

我读
How to generate all dates between two dates

,并发现有sqlite的CTE!但无法弄清楚如何构建查询。我发现的样本具有硬编码值。

+0

查询所需的输出仅适用于单个输入行吗?如果是这样,查询应该如何识别该行? –

回答

0

首先,您应该避免提供日期格式。使用支持的一个(检查SQLite Date and Time Functions)。

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;