Фильтрация в предложении где: синтаксическая ошибка? - PullRequest
1 голос
/ 09 сентября 2010

Пожалуйста, помогите мне отсортировать этот запрос:

WHERE
RECEIPT_DATE BETWEEN( Coalesce(@FROM_DATE,RECEIPT_DATE) AND Coalesce(@TO_DATE,RECEIPT_DATE) )
AND 
OFFICE_ID=Coalesce(@OFFICE_ID,OFFICE_ID)

Ошибка: неправильный синтаксис рядом с ключевым словом «И».

Ответы [ 3 ]

2 голосов
/ 09 сентября 2010

Попробуйте это:

WHERE
   RECEIPT_DATE BETWEEN 
      Coalesce(@FROM_DATE, RECEIPT_DATE) AND Coalesce(@TO_DATE, RECEIPT_DATE) 
   AND 
   OFFICE_ID = Coalesce(@OFFICE_ID, OFFICE_ID)

Вам нужно иметь две даты после BETWEEN (BETWEEN Date1 AND Date2) и без скобок.

1 голос
/ 09 сентября 2010

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

WHERE (X BETWEEN A AND B) AND (Y = C)
1 голос
/ 09 сентября 2010

Проверьте этот запрос, он работает нормально, без ошибок

declare @FROM_DATE datetime
declare @TO_DATE datetime
declare @OFFICE_ID int
select * from table1 WHERE
(RECEIPT_DATE BETWEEN  Coalesce(@FROM_DATE,RECEIPT_DATE) AND Coalesce(@TO_DATE,RECEIPT_DATE) )
AND 
OFFICE_ID=Coalesce(@OFFICE_ID,OFFICE_ID)

Ошибка в вашем предложении where:

BETWEEN (

потому что вы не можете поставить (после МЕЖДУ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...