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
Другие вопросы по тегам