我有一个增加日期(有间隙)和相应值
的表格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作为数据库系统,但如果有区别,我可以切换到最合适的。
答案 0 :(得分:3)
您没有指定DBMS,但这是适用于大多数现代DBMS的ANSI SQL(它不是您想要的输出,但确实显示了两个值之间的差异)。
select date,
value,
value - lag(value) over (order by date) as diff
from your_table
答案 1 :(得分: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