2017-09-01 89 views
1

我有一個表BOOKDOCUMENT與一些字段(Id,documentDate);行之間的sqlite比較值

documentDate具有以下格式:「YYYY-MM-DD HH:MM:SS.SSS」。

我想獲得我的表的每個documentDate之間的天數的平均值。

所以我的想法是compage每個documentDate。

例:最後一排與排 - 1 =它給我的第一個值 最後一行 - 1與最後一排-2 =它給我的第二個值

SELECT julianday(DocumentDate) - 
    (
    SELECT julianday(DocumentDate) 
    FROM BOOKDOCUMENT 
    WHERE Id = 25 
    ) AS daysBetweenDoc 
FROM BOOKDOCUMENT 
WHERE Id = 26 
UNION ALL 
SELECT julianday(DocumentDate) - 
     (
     SELECT julianday(DocumentDate) 
     FROM BOOKDOCUMENT 
     WHERE Id = 24 
     ) AS daysBetweenDoc 

FROM BOOKDOCUMENT 
WHERE Id = 25; 

它的工作找到,但如何我可以重視其他行嗎? 我想我必須使用CTE

+0

是ID值保證是連續的? –

+0

你好,不幸的是。所以,我認爲我不能使用CTE來增加ID值...... – yinyin76

+0

請爲MCVE中包含的幾個示例提供一個[mcve]並提供所需的輸出。 – Yunnosch

回答

0

您可以查找下一個較小的日期與correlated subquery

SELECT Id, 
     DocumentDate, 
     julianday(DocumentDate) - 
     (SELECT DocumentDate 
     FROM BookDocument AS T2 
     WHERE T2.DocumentDate < BookDocument.DocumentDate 
     ORDER BY DocumentDate DESC 
     LIMIT 1 
     ) AS daysBetweenDoc 
FROM BookDocument; 
+0

太棒了,正是我在找的東西。 我不知道相關的子查詢。 謝謝。 – yinyin76