Проверьте диапазон из таблицы, где арифметические операторы также находятся в той же таблице - PullRequest
0 голосов
/ 30 марта 2019

Как получить значение col5 из таблицы с именем table для целочисленного ввода

col3 относится к col1 и col4 относится к col2.

col1   col2     col3    col4     col5
75       0       <               Approved
50      70       >       <       Conditionally Approved
20      50       >       <       Rejected

Если я задаю 74 в качестве входных данных, мой ожидаемый результат будет равен col5 ('approved').

Ответы [ 2 ]

0 голосов
/ 30 марта 2019

Если вопрос действительно в том, как рассчитать col5, то применим следующий код:

declare @Value as Int = 74;

select col1, col2, col3, col4,
  case
    when col3 = '<' and @Value < col1 and col4 = '' then 'Approved'
    when col3 = '>' and @Value > col1 and col4 = '<' and @Value < col2 then 'Conditionally Approved'
    else 'Rejected' end as col5
  from mytable;

Обратите внимание, что предполагается, что данные выборки охватывают все случаи и что любая ошибка утверждения приводит к «Отклонено». Дополнительные операторы when могут быть добавлены для обработки дополнительных сравнений и возвратов статуса.

0 голосов
/ 30 марта 2019

Я думаю, что следующий запрос должен помочь:

SELECT col5
FROM mytable
WHERE    
    ( 
        col3 IS NULL 
        OR (col3 = '<' AND @input < col1) 
        OR (col3 = '>' AND @input > col1) 
    ) AND ( 
        col4 IS NULL 
        OR (col4 = '<' AND @input < col2) 
        OR (col4 = '>' AND @input > col2) 
    )

Демонстрация на DB Fiddle с вашими данными выборки:

ОБЪЯВИТЬ @input INTEGER; SET @input = 74;

SELECT col5
FROM mytable
WHERE    
    ( 
        col3 IS NULL 
        OR (col3 = '<' AND @input < col1) 
        OR (col3 = '>' AND @input > col1) 
    ) AND ( 
        col4 IS NULL 
        OR (col4 = '<' AND @input < col2) 
        OR (col4 = '>' AND @input > col2) 
    )


GO
| col5     |
| :------- |
| Approved |

NB. В ваших интервалах есть несоответствия. Например, значение от 20 до 50 обычно совпадает для двух записей (0-75 и 20-50).

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