2017-05-16 5 views
-1

Msg 156, Ebene 15, Status 1, Zeile 67
Falsche Syntax in der Nähe des Schlüsselwortes 'ODER'.Syntaxfehler für 'ODER'

WHERE cast (INVOICEDATE as date)>[email protected] 
    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)) 

Antwort

1

Nach meinem Verständnis unten Syntax Linie sucht nach exakter Übereinstimmung.

InvoiceStatusID=('IN' OR 'OR') 

Sie können die IN-Syntax verwenden, da IN eine Abkürzung für multiple OR ist.

SELECT column_name(s) 
FROM table_name 
WHERE column_name IN (value1, value2, ....); 
1

Sie nicht gleich = mehrere Werte vergleichen können. Es ist ein boolescher Ausdruck. Verwenden Sie stattdessen IN.

WHERE cast (INVOICEDATE as date)>[email protected] AND InvoiceStatusID IN ('IN', 'OR') 
+1

ODER verwenden Sie '(InvoiceStatusID = 'IN' ODER InvoiceStatusID = 'ODER')' :-D – user2864740

0

möchte neu schreiben diese in

1) für invoicestatus Verwendung in der Ausgabe

2) zu korrigieren, und verwenden Sie NICHT VORHANDEN über innere Verknüpfung statt zwei NICHT IN Subqueries

WHERE cast (INVOICEDATE as date)>[email protected] 
    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) 
Verwandte Themen