Я пытаюсь изменить начало недели набора данных с понедельника на предыдущую пятницу. Общие данные будут агрегированы до недельного уровня, чтобы выглядеть следующим образом.
Неделя 1
Пятница,
Суббота,
Воскресенье,
Понедельник,
Вторник,
среда,
Четверг
Лучшее, что я придумала для этого, - это описание случая, в котором пятница, суббота и воскресенье относятся к первому дню следующей недели (первый день системы - понедельник, а последний день - воскресенье).
SELECT TRANSACTIONDATE,
CASE
WHEN TO_CHAR(TRANSACTIONDATE, 'DAY') IN ('FRIDAY', 'SATURDAY',
'SUNDAY') THEN (TRUNC(TRANSACTIONDATE, 'IW')+7)
ELSE TRUNC(TRANSACTIONDATE, 'IW')
END AS TEST
FROM TRANSACTIONS
Моя логика для этого кода такова: если пт, сб или вс, найдите первый день недели и добавьте 7, возвращая первый день недели следующей недели.
Проблема в том, что выражение "TRUNC (TRANSACTIONDATE, 'IW') + 7" не добавляет 7 дней к началу недели.
Когда я запрашиваю
select "TRUNC(TRANSACTIONDATE, 'IW')+7" from transactions
Я получаю начало следующей недели, и это правильно.
Таким образом, все дни с пятницы по четверг находятся под одним и тем же номером недели.
Есть идеи, что идет не так, или есть лучший способ добиться того, чего я добиваюсь?
Спасибо,
Том
Редактирование **
Первый набор данных - это то, что я хотел бы получить,
Date Day Week
4/1/2018 Monday 1
4/2/2018 Tuesday 1
4/3/2018 Wednesday 1
4/4/2018 Thursday 1
4/5/2018 Friday 2
4/6/2018 Saturday 2
4/7/2018 Sunday 2
4/8/2018 Monday 2
4/9/2018 Tuesday 2
4/10/2018 Wednesday 2
4/11/2018 Thursday 2
Итак, вы можете видеть, что я хочу, чтобы день / суббота / воскресенье приходили на следующую неделю.
Это текущая система дат / недель,
Date Day Week
4/1/2018 Monday 1
4/2/2018 Tuesday 1
4/3/2018 Wednesday 1
4/4/2018 Thursday 1
4/5/2018 Friday 1
4/6/2018 Saturday 1
4/7/2018 Sunday 1
4/8/2018 Monday 2
4/9/2018 Tuesday 2