Скажем, у меня есть запрос, который выбирает все продажи за последние 90 дней.Я хочу быть в состоянии изолировать определенные строки в зависимости от случая и времени и не могу понять, как это сделать.Описание случая зависит от даты, поэтому: если дата находится между 3/1 и 5/31, то я хочу выбрать продажи за любой конец месяца (3/31, 4/30, 5/31 и СЕГОДНЯ), в противном случае, если дата не между 3/1 и 5/31, то я просто хочу выбрать последние 3 месяца.
Пока я пытался вставить оператор Case / When в предложение WHERE, но это не кажется кошерным.Есть ли другой способ сделать это?
Для справки, таблица @monthends содержит следующий единственный столбец:
monthends
- 2019-03-31
- 2019-02-28
- 2019-01-31
, а таблица @insideRule содержит аналогично:
insiderRule
Запрос:
SELECT *
FROM mytable
WHERE asofdate IN
CASE WHEN asofdate BETWEEN '3-1-2019' AND '5-31-2019' THEN
(SELECT * FROM @insideRule)
ELSE
(SELECT * FROM @monthends)
END
При выполнении вышеизложенного я получаю синтаксисошибки вокруг "IN"