SQL Case неравенство
В настоящее время я использую
If @City > 0 then
SELECT * FROM table1 Where Column1 < @City
ELSE
SELECT * FROM table1
Как я могу добиться того же эффекта в одном запросе?
3 ответа
Решение
Вы просто помещаете условие в запрос:
select *
from table1
where ( @city > 0
and column1 < @city )
or @city <= 0
Будьте предупреждены, хотя; это может немного запутать оптимизатор, что может сделать ваш первый запрос менее производительным. Как и все тестирование до реализации.
Попробуй это:
select *
from table1
where column1 < @city
or @city <= 0
Еще один вариант
SELECT *
FROM table1
WHERE Column1 < CASE WHEN @City > 0
THEN @City
ELSE Column1 + 1 END