2017-10-10 120 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;