Logi c для получения динамического диапазона дат c в запросе на финансовый год - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть требование выбрать данные для разных диапазонов дат, в зависимости от текущего месяца, в котором они выполняются. У меня есть хранимая процедура, которая принимает введенную пользователем дату, т.е. 04/06/2020, в переменную @PPE. Исходя из части месяца этой даты, мне нужно запросить различные диапазоны, как в следующем финансовом году (1 июля - 30 июня): я использую пример с использованием финансового года 2020.

MONTH(@PPE)     Date Range to Query
July            07/01/2019 - 07/01/2019
August          07/01/2019 - 08/31/2019
September       07/01/2019 - 09/30/2019
October         07/01/2019 - 09/30/2019
November        07/01/2019 - 09/30/2019
December        07/01/2019 - 09/30/2019
January         07/01/2019 - 12/31/2019
February        07/01/2019 - 12/31/2019
March           07/01/2019 - 12/31/2019
April           07/01/2019 - 03/31/2020
May             07/01/2019 - 03/31/2020
June            07/01/2019 - 03/31/2020

Затем, начиная со следующего финансового года (2021), он будет go следующим образом и далее ...

MONTH(@PPE)     Date Range to Query
July            07/01/2020 - 07/01/2020
August          07/01/2020 - 08/31/2020
September       07/01/2020 - 09/30/2020
October         07/01/2020 - 09/30/2020
November        07/01/2020 - 09/30/2020
December        07/01/2020 - 09/30/2020
January         07/01/2020 - 12/31/2020
February        07/01/2020 - 12/31/2020
March           07/01/2020 - 12/31/2020
April           07/01/2019 - 03/31/2021
May             07/01/2019 - 03/31/2021
June            07/01/2019 - 03/31/2021

Я начал с этого запроса, но у меня возникли проблемы с манипулированием правильным FISCAL_YEAR, чтобы поставить в зависимости от месяца @PPE, поскольку он охватывает 2 года с апреля по июнь.

PERIOD представляет номер финансового месяца, т. е. июль = 1, август = 2, .. ..Июня = 12

DECLARE @PPE datetime; SET @PPE = '04/06/2020'

SELECT COMPANY, DEPTID,  FISCAL_YEAR, PERIOD, GH_REPORTID,  SUM(GH_HOURS), SUM(GH_DOLLARS)
FROM PS_GH_SLT_ACTUALS
WHERE DEPTID = 55650000
AND GH_REPORTID = 'BA'
AND PERIOD <= CASE WHEN MONTH(@PPE) BETWEEN 1 AND 3 THEN 12
                   WHEN MONTH(@PPE) BETWEEN 4 AND 6 THEN 3
                   WHEN MONTH(@PPE) BETWEEN 7 AND 9 THEN 6
                   WHEN MONTH(@PPE) BETWEEN 10 AND 12 THEN 9
                   END
-- AND PERIOD <= 7  ???
AND FISCAL_YEAR = CASE WHEN MONTH(@PPE) BETWEEN 1 AND 3 THEN YEAR(@PPE)
                       WHEN MONTH(@PPE) BETWEEN 4 AND 6 THEN ....???


GROUP BY COMPANY, DEPTID,  FISCAL_YEAR, PERIOD, GH_REPORTID

1 Ответ

1 голос
/ 11 февраля 2020

Если ваш финансовый год уже в формате, то вы можете использовать следующее условие 2020 год, согласно вашим данным. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...