2013-04-02 2 views
0

Я хочу изменить существующий SQL-запрос (номер 1), приведенный ниже. Во-первых, мне нужно знать, можно ли делать то, что я хочу (номер 2). Если да, то каковы способы, которыми я могу это сделать.Нужна помощь в изменении моего SQL-запроса

--**(Number 1)** What I currently have  

SELECT Column1 
    FROM dbo.Table1 
    WHERE ColumnValue1 = 'One' 
    AND scalarFunctionResult(Var) = 'Word1' 
    AND ColumnValue2 = "Word2" 


--*(Number 2)* What I need  
SELECT Column1 
    FROM dbo.Table1 
    WHERE ColumnValue1 = 'One' 
    AND SomeVariable IN (scalarFunctionResult(Var) = 'Word1', 'WordA') 
-- Perform a query based 
--on value of SomeVariable, Please read pseudo code below 
    AND ColumnValue2 = "Word2" 

--Pseudo code for logic 
--if(SomeVariable = 'Word1') then run query ABCD, 
--else if(SomeVariable = 'WordA') then run some other query EFGH 
+0

Не могли бы вы объяснить, почему вы хотите проверить значение Вар против некоторого статического значения «Word1» внутри предложения Where? Не имеет значения в результате? – Umesh

ответ

3

Это простой OR

SELECT Column1 
    FROM dbo.Table1 
WHERE ColumnValue1 = 'One' 
    AND ((@SomeVariable = 'Word1' AND <the condition ABCD>) 
     OR 
     (@SomeVariable = 'WordA' AND <the condition EFGH>)) 

Эффективно, вы получите результат либо ABCD при @Somevariable = 'Word1', или из другого состояния "запроса" EFGH когда @Somevariable = 'WordA'.

например.

SELECT Column1 
    FROM dbo.Table1 
WHERE ColumnValue1 = 'One' 
    AND ((dbo.scalarFunctionResult(@SomeVariable) = 'Word1' AND ColumnValue2 = "Word2") 
     OR 
     (dbo.scalarFunctionResult(@SomeVariable) = 'WordA' AND ColumnValue3 = "Word3")) 
0

Вы пытаетесь выяснить, как создать инструкцию IF в SQL? Не уверен, что правильно понял ваш вопрос.

Если это так, здесь ссылка от MSDN. Возможно, вам это не понадобится в этом случае, как показал Ричард Киви.

+1

Да, я ищу что-то вроде IF. Но я рассмотрю все ответы, которые я получаю. – user42117

Смежные вопросы