2015-01-06 3 views
3

Я хочу использовать оператор case в предложении where. Но изменение предложения where зависит от моего уравнения.Использование оператора case в разделе Where (with column)

Например:

Таблица

ID Column1 Column2 
1 2   3 
2 4   1 
3 5   4 
4 4   7 

Запрос

select * from table 
where (case when column1>=column2 then column2>3 else column1>3 end) 

Ожидаемое выходной

ID Column1 Column2 
3 5   4 
4 4   7 

ответ

3

Это звучит, как вы хотите, чтобы ваш CASEвыражение быть:

SELECT * 
FROM dbo.YourTable 
WHERE CASE 
      WHEN column1 >= column2 AND column1 > 4 THEN 1 
      WHEN column1 < column2 AND column2 > 4 THEN 1 
      ELSE 0 
     END = 1 
+0

спасибо большое. это то, чего я точно хочу! моя ошибка; я пытаюсь поставить выражение правой стороны :) выражение должно быть слева! Благодарю. – Pisagor

0

Как о чем-то вроде

select * 
from table 
where (
      case 
       when column1>=column2 
        then column1 
       else column2 
      end > 4 
     ) 
0

If else могут быть смоделированы с использованием Or & And оператор в where clause.Try это.

SELECT * 
FROM tablename 
WHERE (column1 >= column2 
     AND column1 > 4) 
     OR (column1 < column2 
      AND column2 > 4) 
1

Вам не нужно CASE, вы можете использовать OR:

select * from table 
where (column1 >= column2 and column1 > 3) 
    or (column1 < column2 and column2 > 3) 
0

Попробуйте это:

SELECT * 
FROM tableA A 
WHERE (CASE WHEN A.column1 >= A.column2 THEN A.column2 
      ELSE A.column1 
     END) > 3 
Смежные вопросы