Длинная история здесь заключается в том, что у меня есть данные начала для даты, и я хотел бы извлечь из них данные за месяц, используя следующую логику: 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 ответ1

0

Условие должно быть передано в виде строки.

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]

Вы можете присоединить таблицу к себе, чтобы сравнить разные строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .