#sql #sql-server #database #tsql
#sql #sql-сервер #База данных #tsql
Вопрос:
Я пытаюсь найти способ создать последовательность для периодов дат и кварталов (не уверен, что это правильный термин).
В основном это поможет людям ориентироваться в датах на основе недель, периодов и кварталов, как только я присоединю это к нашим данным о продажах. Например, если я просто хочу узнать продажи за прошлую неделю, я мог бы просто использовать WHERE WeekSequence = -1
… Другой пример: менеджер хочет получить данные о продажах за прошлый квартал, я мог бы просто использовать WHERE QuarterSequence = -1
… что-то вроде этого.
WeekStartDate WeekEndDate CurrentWeek Period Quarter WeekSequence
----------------------------------------------------------------------
2020-08-03 2020-08-09 0 2 1 -5
2020-08-10 2020-08-16 0 2 1 -4
2020-08-17 2020-08-23 0 2 1 -3
2020-08-24 2020-08-30 0 2 1 -2
2020-08-31 2020-09-06 0 2 1 -1
2020-09-07 2020-09-13 1 3 1 0
2020-09-14 2020-09-20 0 3 1 1
2020-09-21 2020-09-27 0 3 1 2
2020-09-28 2020-10-04 0 3 1 3
2020-10-05 2020-10-11 0 4 2 4
2020-10-12 2020-10-18 0 4 2 5
Как я хочу, чтобы это выглядело (выделено):
Комментарии:
1. Взгляните на следующий блог
2. Можете ли вы объяснить, что такое «Период»?
3. @Christian Я имею в виду финансовый период и квартал. Прошу прощения, если это было непонятно.
4. @PrebenHuybrechts это скорее создание фактического измерения даты. это не поможет…
5. @ChristianneRioOrtega Хорошо, но как определяется «Период»? То есть, когда (например, в каком месяце) начинается и заканчивается финансовый период?
Ответ №1:
Если я правильно понимаю, просто используйте оконные функции:
select t.*,
(period -
max(case when currentweek = 1 then period end) over ()
) as periodsequence,
(quarter -
max(case when currentweek = 1 then quarter end) over ()
) as quartersequence
from t;
Вы можете включить это в представление, а не помещать в таблицу.