SQL-запрос, основанный на значении столбца - PullRequest
0 голосов
/ 03 сентября 2018

Есть ли SQL-запрос, который изменяет условие в зависимости от значения другого столбца?

Я хочу выполнить запрос, который делает следующее

select colA,colB, colC
from TABLED
where colA > 10
  and (if colC == A then colB = 'C' else colB = 'B')

Если это даже имеет смысл, если colC == A, у нас будет

select colA, colB, colC
from TABLED
where colA > 10 and colB = 'C'

в противном случае мы получили бы

select colA,colB,colC
from TABLED
where colA > 10 and colB = 'B'

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Если вы хотите вычислить значение на основе условия, вы можете использовать CASE WHEN :

SELECT
    colA,
    colB,
    (CASE
        WHEN CONDITION1 THEN VALUE1
        WHEN CONDITION2 THEN VALUE2
        ...
        ELSE VALUEN
    END) AS colC    
FROM table
    WHERE colA > 10
0 голосов
/ 03 сентября 2018

Вы можете выразить это, используя условную логику. Нет case требуется:

select colA, colB, colC
from TABLED
where colA > 10 and
      ( (colC = A and colB = 'C') or
        (colC <> A and colB = 'B')
      );

Это не учитывает, что colC может быть NULL. Это легко включить в запрос, если это необходимо.

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