У меня есть таблица, которая заполняется информацией один раз в неделю, с датой, когда она заполняется в виде одного столбца в таблице.Расчет за неделю до
Я работаю над запросом, который в основном сравнивает данные с этой недели с данными с прошлой недели исключительно, поэтому мне нужно знать, какая неделя была на прошлой неделе. Это легко сделать следующим образом:
WHERE TO_CHAR(LASTWEEK.DATE_GENERATED, 'IW') = TO_CHAR(SYSDATE, 'IW') -1
AND TO_CHAR(LASTWEEK.DATE_GENERATED, 'YY') = TO_CHAR(SYSDATE, 'YY')
Таблица может содержать данные нескольких лет, поэтому я также проверить, что год будет то же самое.
Проблема возникает, когда мы находимся в первую неделю года, и мы хотим сравнить ее с прошлой неделей. Таким образом, мы находимся на неделе 1 минус 1, это дает нам 0, но я хочу, чтобы он сравнивался с 54-й неделей с LAST года.
Есть ли способ сделать это?
Я чувствую, что функция TRUNC может работать с этим, но я не уверен, как использовать его в этом сценарии, также имея в виду, что он не должен сравниваться с тем же годом, но в прошлом году.
Заранее благодарен!
Просто быть придирчивым, в прошлом году не было недели 54. Но вы должны использовать IYYY (или, по крайней мере, IY), если вы используете IW, иначе вы можете получить странные результаты. 2016-01-01 - это 1653 с YYIW и 201653 с YYYYIW , но 1553 с IYIW и 201553 с IYYYIW. (И 1601 wi й YYWW и 201601 с YYYYWW, если вы предпочитаете; просто быть последовательным). –