Ошибка при добавлении оператора регистра с использованием параметров даты: «Тип операнда clash: date несовместима с int» - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть запрос, цель состоит в том, чтобы позволить пользователю передавать начальную и конечную даты для выбора продаж клиента в пределах диапазона.Кроме того, есть два подзапроса, один из которых получает первую дату заказа клиента, а другой - последнюю дату заказа клиента до выбранного диапазона дат.

Запрос работает нормально до тех пор, пока я не добавлю оператор случая, который пытается создать несколько групп клиентов на основе нового статуса клиента, а также статуса повторного набора клиентов.

Я пытался несколько раз перестроить подзапросы, но я думаю, что проблема в утверждении case.Что касается псевдонимов, то текущая конфигурация немного сбивает с толку, подзапросы составляются, а не объединяются по отдельности, поэтому соглашения об именах странные, но опять же, запрос работает до тех пор, пока я не попытаюсь добавить оператор case.

К сожалению, я неЯ не знаю достаточно, чтобы понять, в чем проблема, поэтому любая помощь будет принята с благодарностью.Ниже приводится регистр.

Возвращается ошибка

Столкновение с типом операнда: дата несовместима с int

Код:

CASE 
   WHEN LAST_ORD.FIRST_ORDER BETWEEN @START_DATE AND @END_DATE 
      THEN 'NEW IN SELECTED PERIOD'
   WHEN LAST_ORD.FIRST_ORDER <= @END_DATE - 365 
      THEN 'NEW IN LAST YEAR'
   WHEN LAST_ORD.LAST_ORDERED < @START_DATE - 730 
      THEN 'REBOARDED 2+Y INACTIVE'
   WHEN LAST_ORD.LAST_ORDERED < @START_DATE - 365 
      THEN 'REBOARDED 1+Y INACTIVE'
   ELSE 'ACTIVE CUSTOMER'
END AS CUST_HIST

1 Ответ

0 голосов
/ 23 апреля 2019

вам нужно dateadd

CASE WHEN LAST_ORD.FIRST_ORDER BETWEEN @START_DATE AND @END_DATE THEN 'NEW IN SELECTED PERIOD'
   WHEN LAST_ORD.FIRST_ORDER <= DATEADD(day,- 365,@END_DATE ) THEN 'NEW IN LAST YEAR'
   WHEN LAST_ORD.LAST_ORDERED < DATEADD(day,- 730,@START_DATE )  THEN 'REBOARDED 2+Y INACTIVE'
   WHEN LAST_ORD.LAST_ORDERED < @DATEADD(day,- 365,@START_DATE )THEN 'REBOARDED 1+Y INACTIVE'
   ELSE 'ACTIVE CUS
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...