Oracle -Назначение недели с понедельника по воскресенье на номер недели для календарной даты - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть данные с 01 января 2019 года - настоящее время. Я хочу присвоить номера недели столбцу даты. Неделя должна начинаться в понедельник и заканчиваться в воскресенье.

Но функция, которую я использую, начинается с 01 января 2019 года (вторник) в качестве даты начала недели 1 для следующего to_number (to_char (to_date (CALENDAR_D, 'dd-mm) -yyyy '),' ww '))

Если я заменю' ww 'на' iw ', то он начинается с первого четверга недели.

Я хочу, чтобы цикл был понедельником в воскресенье с первым понедельником 2019 года, который будет моим первым днем ​​моей первой недели.

Ожидаемый результат

Calendar_d       Week Number
01/01/2019        Any Number (Tuesday)
01/02/2019        Any Number
01/03/2019        Any Number
01/04/2019        Any Number
01/05/2019        Any Number
01/06/2019        Any Number (Sunday)
01/07/2019            1
01/08/2019            1
01/09/2019            1
01/10/2019            1
01/11/2019            1
01/12/2019            1
01/13/2019            1
01/14/2019            2

1 Ответ

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

Вы можете использовать next_day() и арифметику даты c:

select floor((datecol - next_day(date '2019-01-01', 'Monday')) / 7) + 1 as weeknum

Или, если это в таблице, вы можете использовать функции окна:

select t.datecol,
       sum(case when to_char(datecol, 'DY') = 'MON' then 1 else 0 end) over (partition by to_char(datecol, 'YYYY') order by t.datecol) as weeknum
from t
where t.datecol >= date '2019-01-01'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...