Процент прошедшей четверти - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь создать вычисляемое поле, которое показывает, какой процент квартала прошел до сих пор. Вот что я придумал:

DATEDIFF('day',DATETRUNC('quarter',[Max Date in quarter]),[Max Date in quarter]) //days past in the quarter so far

/

//total days in quarter
IF (DATEPART('quarter', TODAY()) = 1) THEN
    DATEDIFF('day', #2019-01-01#, #2019-03-31#)
ELSEIF (DATEPART('quarter', TODAY()) = 2) THEN
    DATEDIFF('day', #2019-04-01#, #2019-06-30#)
ELSEIF (DATEPART('quarter', TODAY()) = 3) THEN
    DATEDIFF('day', #2019-07-01#, #2019-09-30#)
ELSEIF (DATEPART('quarter', TODAY()) = 4) THEN
    DATEDIFF('day', #2019-10-01#, #2019-12-31#)
END

[Max Date in Quarter] выглядит так:

{ FIXED YEAR([Yyyy Mm Dd]), DATETRUNC('quarter',[Yyyy Mm Dd]): MAX([Yyyy Mm Dd])}

Однако, похоже, он не работает должным образом. Для Q1 2019 я получаю 97.8%, а для Q2 2019 я получаю 98.9%. Я ожидаю, что оба будут на 100%.

Кроме того, есть ли способ, которым я мог бы динамически обновлять год, поэтому, когда наступит 2020 год, я не буду настигнут и мне придется вручную изменять даты здесь?

1 Ответ

0 голосов
/ 04 июля 2019

Я добился правильного процента, используя ниже:

//days past in the quarter so far
IF (DATEPART('quarter', [Max Date in quarter]) = 1) THEN
    DATEDIFF('day', #2019-01-01#, today())
ELSEIF (DATEPART('quarter', [Max Date in quarter]) = 2) THEN
    DATEDIFF('day', #2019-04-01#, today())
ELSEIF (DATEPART('quarter', [Max Date in quarter]) = 3) THEN
    DATEDIFF('day', #2019-07-01#, today())
ELSEIF (DATEPART('quarter', [Max Date in quarter]) = 4) THEN
    DATEDIFF('day', #2019-10-01#, today())
END

/

//total days in quarter
IF (DATEPART('quarter', [Max Date in quarter]) = 1) THEN
    DATEDIFF('day', #2019-01-01#, [Max Date in quarter])
ELSEIF (DATEPART('quarter', [Max Date in quarter]) = 2) THEN
    DATEDIFF('day', #2019-04-01#, [Max Date in quarter])
ELSEIF (DATEPART('quarter', [Max Date in quarter]) = 3) THEN
    DATEDIFF('day', #2019-07-01#, [Max Date in quarter])
ELSEIF (DATEPART('quarter', [Max Date in quarter]) = 4) THEN
    DATEDIFF('day', #2019-10-01#, [Max Date in quarter])
END
...