2010-05-16 58 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)