Monday, 16 April 2012

SQL - CASE in a WHERE clause

Case statement in where clause

  1. SELECT T2.*, T1.*
  2.      FROM T1, T2
  3.    WHERE (CASE WHEN T2.COMPARE_TYPE = 'A' AND
  4.                      T1.SOME_TYPE LIKE 'NOTHING%'
  5.                 THEN 1
  6.                 WHEN T2.COMPARE_TYPE != 'A' AND
  7.                      T1.SOME_TYPE NOT LIKE 'NOTHING%' 
  8.                   THEN 1
  9.                ELSE 0
  10.           END) = 1

    Result

    C        SEQ SOME_TYPE
    - ---------- -----------
    A          1 NOTHING 1
    A          2 NOTHING 2
    B          3 SOMETHING 1
    B          4 SOMETHING 2
    B          5 SOMETHING 3
    B          6 SOMETHING 4

No comments:

Post a Comment