2016-04-25 12 views
1

Ich möchte vergleichen 3 Spalte Wert, der Vergleichswert von Col2 in der Tabelle.Wie zu vergleichen drei Spalte in Sql

Col1 Col2 Col3

12 < 25 TRUE

25 > 20 TRUE

15 = 25 FALSE

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

Kann mir jemand helfen? Erweiterte Danke.

+1

Haben Sie versucht, _anything_ Ihr Problem zu lösen? Leute lieben es, ihre Bemühungen zu zeigen, aber du musst deine zuerst zeigen. Kennen Sie grundlegendes T-SQL? Das hört sich gar nicht so schwer an. Das erste Google-Ergebnis ist [Wie vergleiche ich zwei Spalten für die Gleichheit in SQL Server?] (Http://stackoverflow.com/q/1632792/447156) zum Beispiel .. –

+0

Hallo Soner, ich habe mehr als 2 Stunden versucht, auch wenn ich es versuche Suche in google. endlich gebe ich auf dann nur post hier. hier das Beispiel ... CASE WANN col1 user3538475

Antwort

2

Sie können versuchen, case verwenden, wie folgt aus:

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

die Abfrage

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 

andere possibily sein könnte, ist

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

Basierend auf 1 Lösung habe ich einen Fehler nach ... Falsche Syntax in der Nähe von '<'. Bitte geben Sie – user3538475

+0

@ user3538475 an: Wenn Sie es in * sql query * setzen möchten, sagen Sie in 'where' (nicht in der gespeicherten Prozedur) müssen Sie entweder die * second * Konstruktion verwenden oder den booleschen Wert verstecken (als' 1') und '0' usw.) –

+0

Vielen Dank .. Speichern Sie meinen Tag .. – user3538475