SQL-考虑到工作日的每日价值变化
您好,我正在尝试编写一个查询,该查询将跟踪在周末/假日未填充的列的每日更改 首先,我的数据如下所示:SQL-考虑到工作日的每日价值变化,sql,ms-access-2013,Sql,Ms Access 2013,您好,我正在尝试编写一个查询,该查询将跟踪在周末/假日未填充的列的每日更改 首先,我的数据如下所示: Date Value 11/5/2015 10 11/6/2015 11 11/9/2015 12 11/10/2015 12 11/11/2015 11 因此,我希望我的查询给出每个日期相对于前一个工作日的值更改结果,以返回如下内容: Date Change in Value since previous
Date Value
11/5/2015 10
11/6/2015 11
11/9/2015 12
11/10/2015 12
11/11/2015 11
因此,我希望我的查询给出每个日期相对于前一个工作日的值更改结果,以返回如下内容:
Date Change in Value since previous business day
11/5/2015 -
11/6/2015 1
11/9/2015 1
11/10/2015 0
11/11/2015 -1
如何在MS Access中编写查询,跟踪工作日内的每日变化?目前,我已经写了以下内容,它只返回一个日历日的每日变化,而不是一个工作日。所以它不会在周一归还任何东西
SELECT A.Date, A.Value, ( A.Value - B.Value) as [Daily change]
FROM Table as A INNER JOIN Table as B on (A.date = B.date+1)
=============================================================================
感谢各位,我已经尝试了所有3个建议,但不幸的是,它们都不起作用:还有一个专栏名为product ID,也许这就是为什么?换句话说,在每一天,每个产品ID都会有自己的不同值。总共有100个产品ID,因此在每个日期有100个不同的值,我希望跟踪100个产品ID中每个产品ID的每日变化。有人能帮忙吗 有点黑,但为什么不呢:
3天前也加入
使用iif表示如果1天前的差异为空,则显示3天前的差异
SELECT
A.Date, A.Value,
iif (isNull( A.Value - B.Value), ( A.Value - C.Value), ( A.Value - B.Value) ) as [change since last biz day]
FROM [Table] as A
left JOIN [Table] as B on ( A.Date = B.Date + 1 )
left JOIN [Table] as C on ( A.Date = C.Date + 3 )
有时候我只是用英语说了很多次,SQL也跟着说。你想要它,其中B等于小于A的最大日期
SELECT A.Date,
A.Value,
A.Value - B.Value as [Daily Change]
FROM MyTable as A
INNER JOIN MyTable as B
ON B.date = (SELECT MAX(C.date) FROM MyTable C WHERE C.Date < A.Date)
ORDER BY A.Date