' OR'的语法错误

时间:2017-05-16 01:13:42

标签: sql-server syntax

  

Msg 156,Level 15,State 1,Line 67
  关键字' OR'附近的语法不正确。

WHERE cast (INVOICEDATE as date)>=@FROMDATE
  AND InvoiceStatusID=('IN' OR 'OR')
  AND SALESHEADER.ParentAccountID NOT IN (SELECT ACCOUNTID FROM [YVFSQL-REPORT].DBO.ExcludedAccounts where WarehouseID=1)
   AND SALESHEADER.ParentAccountID NOT IN (SELECT ACCOUNTID FROM GetProducePartnerAccountID_ByWarehouseID(1))

3 个答案:

答案 0 :(得分:1)

您不能使用equals =来比较多个值。这是一个布尔表达式。改为使用IN。

WHERE cast (INVOICEDATE as date)>=@FROMDATE AND InvoiceStatusID IN ('IN', 'OR')

答案 1 :(得分:1)

根据我的理解,下面的语法行正在寻找完全匹配。

let texture (fruit : IFruit) =
    match fruit with
    | AvocadoTexture t -> t
    | _ -> String.Empty

您可以使用IN语法,因为IN是多个OR的简写。

InvoiceStatusID=('IN' OR 'OR') 

答案 2 :(得分:0)

想重新写入

1)使用IN进行invoicestatus更正问题

2)并使用NOT EXISTS而不是内部连接而不是两个NOT IN子查询

WHERE cast (INVOICEDATE as date)>=@FROMDATE
  AND InvoiceStatusID in ('IN','OR')
  AND NOT EXISTS
       (SELECT 1 FROM [YVFSQL-REPORT].DBO.ExcludedAccounts T1
         INNER JOIN GetProducePartnerAccountID_ByWarehouseID(1) T2 
            ON
              T1.ACCOUNTID  = T2.ACCOUNTID 
       AND SALESHEADER.ParentAccountID = T1.ACCOUNTID
       AND T1.WarehouseID=1 )