3

Here is my test T-SQL.

DECLARE @TestVal INT

SET @TestVal = 1

SELECT 
   CASE @TestVal
      WHEN (1 | 2 | 6) THEN 'First' // I would like to check 1 or 2 or 6.
      WHEN 3 THEN 'Second'
      WHEN 4 THEN 'Third'
      ELSE 'Other'
   END

The current result is 'Other'.

I would like to get the result as 'First'. How can I use (OR statement) in my T-SQL.

Best regards

marc_s
  • 704,970
  • 168
  • 1,303
  • 1,425
Lamin
  • 109
  • 2
  • 13
  • possible duplicate of [SQL Server: CASE WHEN OR THEN ELSE END => the OR is not supported](http://stackoverflow.com/questions/5487892/sql-server-case-when-or-then-else-end-the-or-is-not-supported) – Cᴏʀʏ Apr 14 '15 at 02:09

3 Answers3

6

Use the condition form of case:

SELECT (CASE WHEN @TestVal IN (1, 2, 6) THEN 'First' 
             WHEN @TestVal = 3 THEN 'Second'
             WHEN @TestVal = 4 THEN 'Third'
             ELSE 'Other'
        END)
Gordon Linoff
  • 1,198,228
  • 53
  • 572
  • 709
2

Try this instead:

SELECT
    CASE WHEN @TestVal IN (1, 2, 6) THEN 'First'
         WHEN @TestVal = 3 THEN 'Second'
         WHEN @TestVal = 4 THEN 'Third'
         ELSE 'Other'
    END
Cᴏʀʏ
  • 101,556
  • 20
  • 162
  • 188
2

Above answers are correct also you can use OR like this:

DECLARE @TestVal INT

SET @TestVal = 2

SELECT (CASE WHEN (@TestVal = 1 OR @TestVal=2 OR @TestVal=6) THEN 'First' 
             WHEN @TestVal = 3 THEN 'Second'
             WHEN @TestVal = 4 THEN 'Third'
             ELSE 'Other'
        END)