我有一个增加日期(有间隙)和相应值的表格
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作为数据库系统,但如果有不同,我可以切换到最适合的系统。
发布于 2012-06-13 15:45:41
因为我不认为像Lag这样的分析函数在access中是可用的,所以您需要使用相关子查询:
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-13 15:08:07
您没有指定DBMS,但这是适用于大多数现代DBMS的ANSI SQL (这不是您想要的输出,但它确实显示了两个值之间的差异)。
select date,
value,
value - lag(value) over (order by date) as diff
from your_tablehttps://stackoverflow.com/questions/11009721
复制相似问题