1

我有一个增加日期(有间隙)和相应值的表

date        | value
01.02.2012  | 10
02.02.2012  | 11
03.02.2012  | 33
07.02.2012  | 34
08.02.2012  | 13

我正在寻找日期之间值的差异表,如下所示:

02.02.2012 - 01.02.2012  | 11 - 10 = +1
03.02.2012 - 02.02.2012  | 33 - 11 = +22
07.02.2012 - 03.02.2012  | 34 - 33 = +1
08.02.2012 - 07.02.2012  | 13 - 34 = -21

现在我将表加载到 excel 中并在那里进行计算,但我觉得有一种可能的方法可以通过在数据库中使用 sql 命令来获取它。有没有?

UPD。实际上我使用 access 作为数据库系统,但如果有区别,我可以切换到最适合的一个。

4

2 回答 2

3

您没有指定 DBMS,但这是适用于大多数现代 DBMS 的 ANSI SQL(它不完全是您想要的输出,但它确实显示了两个值之间的差异)。

select date, 
       value,
       value - lag(value) over (order by date) as diff
from your_table
于 2012-06-13T07:08:07.043 回答
1

由于我认为无法Lag访问类似的分析功能,因此您需要使用相关的子查询:

SELECT  Date,
        Value,
        NextDate,
        NextValue,
        (NextValue - Value) AS ValueDifference,
        DATEDIFF("D", Date, NextDate) AS DateDifference
FROM    (   SELECT  T.Date,
                    T.Value,
                    (   SELECT  TOP 1 Date
                        FROM    LagTest T1
                        WHERE   T1.Date >  T.Date
                        ORDER BY Date
                    ) AS NextDate,
                    (   SELECT  TOP 1 Value
                        FROM    LagTest T1
                        WHERE   T1.Date >  T.Date
                        ORDER BY Date
                    ) AS NextValue
            FROM    LagTest T
        ) AS T
于 2012-06-13T07:45:40.943 回答