Использование between и Or вместе в предложении Where SQL Server

У меня есть два набора дат, для которых мне нужно получить данные, это TY и эквивалентные даты для LY (с разницей в 8 недель). Как это можно сделать в предложении where?

orderdate between (cast(getdate()-420 as date) and cast(getdate()-364 as date)) or (cast(getdate()-56 as date) and cast(getdate()-1 as date))

Перепробовали много вариантов, но получили неправильные синтаксические ошибки.

Предоставьте образцы данных и желаемые результаты.

Gordon Linoff 15.12.2020 14:36

«Испробовали много вариантов, но получили неправильные синтаксические ошибки». и что это были за попытки? Какие ошибки вы получили?

Thom A 15.12.2020 14:38

Вы также должны поставить orderdate between после or...

Tyron78 15.12.2020 14:38

@ Tyron78, это сработало отлично. Большое спасибо. И спасибо другим за то, что нашли время ответить

mgd6 15.12.2020 14:44
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
4
81
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Фиксированный синтаксис:

where (orderdate between cast(getdate()-420 as date) and cast(getdate()-364 as date))
       OR
      (orderdate between cast(getdate()-56 as date) and cast(getdate()-1 as date))

Состояние OR не сочетается с between. Вы должны иметь cond1 OR cond2 следующим образом:

orderdate between (cast(getdate()-420 as date) and cast(getdate()-364 as date)) 
or orderdate between (cast(getdate()-56 as date) and cast(getdate()-1 as date))

Вот мой комментарий в качестве ответа: вы должны исправить синтаксис следующим образом:

orderdate between (cast(getdate()-420 as date) and cast(getdate()-364 as date))
or orderdate between (cast(getdate()-56 as date) and cast(getdate()-1 as date))

Другие вопросы по теме