Получение максимального номера недели минус 2 за каждый месяц - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь получить максимальный номер недели каждого месяца минус 2, с номерами недель с начала года минус 2.

Sample data

January    Feb
Week 1     Week 5
Week 2     Week 6
Week 3     Week 7
Week 4     Week 8

Выход:

January    Feb
Week 1     Week 1
Week 2     Week 2
           Week 3
           Week 4
           Week 5
           Week 6

Итак, для января максимальный номер недели - неделя 4, поэтому мы берем неделю 1 и неделю 2.

Для февраля максимальный номер недели - 8, поэтому мы берем неделю с 1 по 6, а неделя 6 - 8-2.

Схема выглядит следующим образом:

Date (daily)
Year
Month
Week

Example
Date           Year      Month      Week
05/01/2019     2019      January    1

Надеюсь, это имеет смысл?

Спасибо!

афк

1 Ответ

0 голосов
/ 24 апреля 2019

Я пропустил даты, так как ваша Week нумерация может отличаться, но принцип тот же, если у вас уже есть номер Week в ваших исходных данных. Все, что вам нужно сделать, это найти число max Week по Month, затем с помощью self join вернуть все значения Week в том же году с меньшим значением:

declare @t table([Year] int,[Month] varchar(15),[Week] int);
insert into @t values(2019,'January',1),(2019,'January',2),(2019,'January',4),(2019,'February',5),(2019,'February',6),(2019,'February',7),(2019,'February',8),(2019,'March',9),(2019,'March',10),(2019,'March',11),(2019,'March',12),(2019,'March',13);

with m as
(
    select [Year]
          ,[Month]
          ,max([Week])-2 as MaxWeek
    from @t
    group by [Year]
            ,[Month]
)
select m.[Year]
      ,m.[Month]
      ,t.[Week]
from @t as t
    join m
        on t.[Year] = m.[Year]
            and t.[Week] <= m.MaxWeek
order by m.[Year]
        ,m.[Month]    -- Replacing this with your actual date value should give you correct sorting
        ,t.[Week];

выход

+------+----------+------+
| Year |  Month   | Week |
+------+----------+------+
| 2019 | February |    1 |
| 2019 | February |    2 |
| 2019 | February |    4 |
| 2019 | February |    5 |
| 2019 | February |    6 |
| 2019 | January  |    1 |
| 2019 | January  |    2 |
| 2019 | March    |    1 |
| 2019 | March    |    2 |
| 2019 | March    |    4 |
| 2019 | March    |    5 |
| 2019 | March    |    6 |
| 2019 | March    |    7 |
| 2019 | March    |    8 |
| 2019 | March    |    9 |
| 2019 | March    |   10 |
| 2019 | March    |   11 |
+------+----------+------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...