Sql where子句中的筛选:语法错误?

Sql where子句中的筛选:语法错误?,sql,sql-server-2005,Sql,Sql Server 2005,请帮助我对该查询进行排序: WHERE RECEIPT_DATE BETWEEN( Coalesce(@FROM_DATE,RECEIPT_DATE) AND Coalesce(@TO_DATE,RECEIPT_DATE) ) AND OFFICE_ID=Coalesce(@OFFICE_ID,OFFICE_ID) 错误:关键字“和”附近的语法不正确。请尝试以下操作: WHERE RECEIPT_DATE BETWEEN Coalesce(@FROM_DATE, RECE

请帮助我对该查询进行排序:

WHERE
RECEIPT_DATE BETWEEN( Coalesce(@FROM_DATE,RECEIPT_DATE) AND Coalesce(@TO_DATE,RECEIPT_DATE) )
AND 
OFFICE_ID=Coalesce(@OFFICE_ID,OFFICE_ID)
错误:关键字“和”附近的语法不正确。

请尝试以下操作:

WHERE
   RECEIPT_DATE BETWEEN 
      Coalesce(@FROM_DATE, RECEIPT_DATE) AND Coalesce(@TO_DATE, RECEIPT_DATE) 
   AND 
   OFFICE_ID = Coalesce(@OFFICE_ID, OFFICE_ID)
您需要在Date1和Date2之间有两个日期,并且没有括号。

试试这个:

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

您需要在Date1和Date2之间有两个日期,并且前后没有括号。

检查此查询是否正常,没有错误

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 (

因为你不能把两者放在一起

检查此查询,它工作正常,没有错误

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 (
因为你不能把两者放在一起

BETWEEN是一个关键字,不是函数,所以不带括号。如果您发现逻辑结构的位置令人困惑,请尝试包装整个逻辑结构

WHERE (X BETWEEN A AND B) AND (Y = C)
BETWEEN是一个关键字,不是函数,所以不带括号。如果您发现逻辑结构的位置令人困惑,请尝试包装整个逻辑结构

WHERE (X BETWEEN A AND B) AND (Y = C)