长话短说,我有从 Inception 到现在的数据,我想使用以下逻辑从中提取从本月到现在的数据:ITD_Current - ITD_Previous = MTD_Current
。我想某种方法DLookUp
可以解决这个问题。
数据的结构如下:
Company Code | Store Number (multiple store # to a company code) | Date (yyyymm) | ITD Data
我的第一个实验是使用以下方法为每一行创建一个唯一的键
[Company Code] & [Store Number] & [Date]
我将其命名为 Key_Current。然后我创建了一个Key_Previous
列,其格式与上述完全相同,但日期值设置回一个月。然后我创建了一个 DLookUp 函数,如下所示:
DLookUp("[ITD Data]","Table",[Key_Current]=[Key_Prev])
这显然行不通,但希望有人能理解我的意思。我需要的是提取上一个起始日期列,并将其与当前起始日期列进行匹配。然后我可以扩展公式以从上一个中减去当前日期。
对此有什么看法?谢谢!
答案1
该条件必须以字符串形式传递。
DLookUp("[ITD Data]", "Table", "[Key_Current]=[Key_Prev]")
但是,当前密钥永远不会与前一个密钥相似,因此不会产生任何结果。
简单的方法DLookUp
不行,因为它只对一行进行操作。假设你知道当前数据的键,你可以这样做
Dim currentKey As String, prevKey As String
currentKey = <somehow get this key>
prevKey = DLookUp("[Key_Prev]", "Table", "[Key_Current]='" & currentKey &"'")
prevData = DLookUp("[ITD Data]", "Table", "[Key_Current]='" & prevKey &"'")
也许更好的方法是进行查询
SELECT A.*, A.[ITD Data] - Nz(B.[ITD Data]) As MTG_Current
FROM
Table A
LEFT JOIN Table B
ON A.[Key_Prev] = B.[Key_Current]
您可以将表与其自身连接起来以比较不同的行。