2010-05-16 63 views
0

我使用t-sql编写了这个查询并给了我一个错误(关键字'OR'附近的语法错误) 如何以正确的方式编写它?如何在正确的语法或正确的方式这个查询?

SELECT SUM(Quantity) 
    FROM Invoices 
WHERE Invoices.InvoiceDocStatusID = 
     CASE @InventoryType 
         WHEN 1 
         THEN ((2)OR(1)) 
         ELSE 2 
        END 

回答

2

不是那么确定的所需的语义。你是否总希望行匹配InvoiceDocStatusID=2,无论@InventoryType的值是多少,还需要InvoiceDocStatusID=1,其中@InventoryType = 1

SELECT SUM(Quantity) 
    FROM Invoices 
WHERE (Invoices.InvoiceDocStatusID = 1 AND @InventoryType = 1) 
OR Invoices.InvoiceDocStatusID = 2 
1
  • 你总是检查Invoices.InvoiceDocStatusID = 2
  • 唯一的开关是@InventoryType
  • 无需ELSE子句:它会为NULL

所以...

SELECT SUM(Quantity) 
FROM Invoices 
WHERE Invoices.InvoiceDocStatusID IN (2, CASE @InventoryType WHEN 1 THEN 1 END)