2012-10-02 11 views
7

chciałbym zbudować oświadczenie CASE, który zawiera następującą logikę, ale kompilator SQL nie podoba mi się „lub” na moim rachunku:T-SQL SYNTAX problem - za pomocą przycisków lub w instrukcji CASE

CASE expression 
WHEN expression1 OR expression2 
THEN <yadda yadda> 
ELSE <yadda yadda> 
END 

kod dokładniej poniżej:

CASE @var1 
WHEN '99' OR '22' 
      THEN   
       (CASE @var2 
       WHEN 'All' THEN col1 
       ELSE @var2 
       END) 
END 
+2

jest to dozwolone. Prawdopodobnie wystąpił błąd w jednym z twoich dokładnych wyrażeń. Proszę je opublikować. –

+0

Po wyrażeniu "CASE" nie można używać 'OR'. Istnieją dwie formy gramatyki. To jest prosta forma. Potrzebujesz [wyszukiwanego formularza] (http://msdn.microsoft.com/en-us/library/ms181765.aspx). –

Odpowiedz

9
DECLARE @Variable INT; 
SET @Variable = 1; 

SELECT 
    CASE 
     WHEN @Variable = 1 OR @Variable = 2 THEN 'It is 1 or 2' 
     WHEN @Variable = 3 THEN 'It is 3' 
     ELSE 'It is not 1, 2, or 3' 
    END AS [SomeField] 

MSDN docs dla CASE, OR i Expressions.

4

podstawie Twoich zmian, nawet nie potrzebują OR oświadczenie:

CASE 
    WHEN @var1 IN ('99', '22')     
    THEN       
     (CASE @var2     
      WHEN 'All' 
      THEN col1     
      ELSE @var2     
      END) 
    END 
Powiązane problemy