Как отобразить счетчик ожидающих, выполненных, отклоненных, итоговых и финансовых показателей за месяц на сервере MS SQL - PullRequest
0 голосов
/ 23 апреля 2020

Я хочу отобразить счетчики для ожидающих, завершенных, отклоненных, итоговых на основе финансового года и месяца.

Пример финансового года: с апреля по март

Мой проект содержит данные с 2019- Ян-01.

Я хочу выводить как прикрепленное изображение.

Expected Output Data

Если наступит следующий месяц [май], он должен быть добавлен в таблицу. Ожидаемый результат [изображение 2] в приложении.

Expected Output Data

1 Ответ

0 голосов
/ 23 апреля 2020

Предполагая следующую структуру таблицы:

mytable
    mydate  datetime
    status  ('pending', 'completed', 'rejected')

Вы можете сместить дату на 3 месяца, чтобы сгенерировать финансовый год, и выполнить условную агрегацию:

select
    year(dateadd(month, -3, mydate)) fiscal_year,
    month(mydate) fiscal_month,
    sum(case when status = 'pending'   then 1 else 0 end) pending,
    sum(case when status = 'completed' then 1 else 0 end) completed,
    sum(case when status = 'rejected'  then 1 else 0 end) rejected,
    count(*) total
from mytable
group by year(dateadd(month, -3, mydate)), month(mydate)
order by fiscal_year, fiscal_month

Это будет, для Например, поместите записи с марта 2019 года по апрель 2020 года в 2019 финансовом году.

Если вместо столбца fiscal_year указано значение '2019-2020', вы можете заменить year(dateadd(month, -3, mydate)) на следующее выражение в select пункт и group by пункты:

cast(year(dateadd(month, -3, mydate)) as varchar(4)) 
+ '-' 
+ cast(year(dateadd(month, -3, mydate)) + 1 as varchar(4)) 
...