2016-04-25 4 views
1

Я хочу сравнить значение 3 столбца, значение сравнения которого от Col2 в таблице.Как сравнить три столбца в sql

Col1 Col2 Col3

12 < 25 TRUE

25 > 20 TRUE

15 = 25 FALSE

SELECT (case when Col2 = '<' then Col1 < Col3 else Col1 end) 

Может кто-нибудь мне помочь? Продвинутое спасибо.

+1

Вы пробовали _anything_ решить вашу проблему? Людям нравится показывать свои усилия, но сначала вам нужно показать свое. Вы знаете базовый T-SQL? Это звучит не так уж и тяжело. Первый результат Google: [Как сравнить два столбца для равенства в SQL Server?] (Http://stackoverflow.com/q/1632792/447156), например .. –

+0

Привет, Soner, я пробовал более 2 часов, даже если я попытаюсь искать в google. наконец, я сдаюсь, тогда только пост здесь. здесь sample..CASE WHEN col1 user3538475

ответ

2

Вы можете попробовать использовать case, как это:

case 
    when Col2 = '<' then 
    Col1 < Col3 
    when Col2 = '>' then 
    Col1 > Col3 
    when Col2 = '=' then 
    Col1 = Col3 
end case 

запрос может быть

select case 
      when col2 = '=' then 
      case when (col1 = col3) then 1 else 0 end 
      when col2 = '>' then 
      case when (col1 > col3) then 1 else 0 end 
      when col2 = '<' then 
      case when (col1 < col3) then 1 else 0 end 
      else 
      0 
     end 
    from MyTable 

другой possibily является

(Col2 = '<' and (Col1 < Col3)) or 
    (Col2 = '>' and (Col1 > Col3)) or 
    (Col2 = '=' and (Col1 = Col3)) 
+0

На основе 1 решения я получил ошибку после ... Неправильный синтаксис около '<'. Пожалуйста, сообщите – user3538475

+0

@ user3538475: если вы хотите поместить его в * sql-запрос *, скажем, в 'where' (не в хранимой процедуре), вам нужно либо использовать конструкцию * second *, либо скрывать логическое значение (как' 1', и '0' и т.п.) –

+0

спасибо .. сохранить мой день .. – user3538475