Изменить предложение WHERE на основе параметра

#sql #sql-server #case #where-clause #sql-null

#sql #sql-сервер #случай #where-предложение #sql-null

Вопрос:

То, что я пытаюсь сделать, основано на значении параметра, измените предложение WHERE. Я пытался использовать выражение CASE, но, понимая, что пытаюсь использовать его для цели, для которой он не предназначался. Вот моя попытка:

 WHERE CASE WHEN @active = 1 THEN vp.date_installed IS NOT NULL AND vp.date_removed IS NULL 
         WHEN @active = 0 THEN vp.date_removed IS NOT NULL 
         END
 

Конечно, проблема здесь заключается в попытке использовать THEN для выполнения помимо простого извлечения значения. Итак, как мне поступить с этим?

Ответ №1:

Вместо этого я бы рекомендовал логическую логику:

 WHERE 
    (@active = 1 AND vp.date_installed IS NOT NULL AND vp.date_removed IS NULL)
    OR (@active = 0 AND vp.date_removed IS NOT NULL)
 

Комментарии:

1. Тьфу. Конечно. Я ненавижу, когда я пропускаю такие простые вещи. Спасибо! лол