sunil mali Ответов: 2

Как динамически суммировать столбцы в ms access


У меня есть таблица в msaccess, которая имеет столбцы
Jan_CY | Feb_CY | Mar_CY |APR_CY.....

Я хочу рассчитать доход YTD(Year to day) с помощью запроса ms access,

Пример: если текущий месяц-март, то он должен сделать некоторые из Jan_CY+Feb_CY

Точно так же, если текущий месяц-апрель, то он должен быть таким же, как некоторые из Jan_CY+Feb_CY+Mar_CY

В настоящее время я меняю МС запросов доступа вручную каждый месяц что repititive задача для меня,
может ли кто-нибудь предложить мне хорошее решение по этому вопросу?.

Имя Таблицы: Клиент

Что я уже пробовал:

В настоящее время я изменяю запрос в ms access вручную на основе текущего месяца ex:

Если текущий месяц март то я пишу,
выберите Jan_CY+Feb_CY из списка клиентов

2 Ответов

Рейтинг:
9

Maciej Los

Прежде всего, пожалуйста, внимательно прочтите Решение №1 по OriginalGriff[^Я полностью согласен с его записями.

Чтобы Эйб смог добиться этого вы должны оператор UNPIVOT[^] сначала данные.

SELECT <SetOfColumns>, SUM(ValueToSum) AS SumOfSomething
FROM (
    SELECT <SetOfColumns>, Jan_CY AS ValueToSum, SomeDateField AS Period
    FROM YourTable
    UNION ALL
    SELECT <SetOfColumns>, Feb_CY  AS ValueToSum, SomeDateField AS Period
    FROM YourTable
    UNION ALL
    SELECT <SetOfColumns>, Mar_CY  AS ValueToSum, SomeDateField AS Period
    FROM YourTable
    UNION ALL
    SELECT <SetOfColumns>, APR_CY  AS ValueToSum, SomeDateField AS Period
    FROM YourTable
    -- till december
) AS T
WHERE (Month(T.Period) BETWEEN 1 AND Month(Date)-1) AND (Year(T.Period)=Year(Date))
GROUP BY ...


Рейтинг:
20

OriginalGriff

Честно говоря, я бы, вероятно, начал с просмотра своих данных и выяснения, сохранил ли я их наиболее разумным способом - хотя можно делать то, что вы хотите, с вашей текущей структурой данных, это будет очень грязно и неприятно, когда хранение каждого из ваших существующих столбцов в отдельной таблице с меткой даты позволяет вам делать "динамическую группировку", как это довольно просто вычитая месяцы из метки даты.


Maciej Los

5ed!