Как я могу присвоить значение одного поля другому полю на основе третьего поля? - PullRequest
0 голосов
/ 11 января 2012

У меня есть три поля, и если столбец три равен определенному значению, я хочу получить значение столбца 2. Могу ли я сделать это в SELECT, и буду ли я использовать оператор IF или CASE?

Ответы [ 4 ]

3 голосов
/ 11 января 2012
Выражение

A CASE было бы самым простым способом сделать это. Следующий SQL сравнивает два столбца. Вы можете изменить это, чтобы использовать WHEN Col2 = 'xxxx' THEN xxxx'.

SELECT Col1, Col2, CASE
                   WHEN Col2 = Col1 THEN 'True'
                   ELSE 'False'
                   END AS 'Columns Match'
  FROM Table
1 голос
/ 11 января 2012

Надеюсь, это приведет вас в правильном направлении

Select 
    Case 
       when columnthree = 'VALUE' 
          then column2 
          else 'do something' 
    end as [column name]
from 
    table name

Также вы можете захотеть сделать какое-то преобразование, если типы данных для обоих столбцов различны

0 голосов
/ 11 января 2012
select Alpha, Beta, Gamma,
  case
    when Alpha > 2 * Beta then Gamma
    when Beta = Gamma then Alpha + 3
    when Gamma = 2 then 13
    else 42
    end as 'Omega'
  from Alphabet

Победа в первом матче.

CASE возвращает значение, поэтому оно может быть полезно при различных обстоятельствах:

delete ... where case when Id > Limit then 1 else 0 end = 1
update ... set ShoeSize = case when Wide = 1 then ShoeSize + 1 else ShoeSize end, ...
0 голосов
/ 11 января 2012

Вы можете использовать предложение CASE внутри оператора SELECT - IF не будет работать таким образом в SQLServer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...