У меня есть запрос, в этом есть несколько условий на основе параметра
select a,b,c,d from xyz where
case p='Closed' then (q-r)=0
case p='Pending' then (q - isnull(r,0) )>0
case P='All' then all records to be display
Это дает неправильный синтаксис в случае строки
Пожалуйста, предложите мне любое другое решение, чтобы изменить «где условие» в зависимости от значения параметра,
поскольку в данном sql условие 'where' зависит от значения параметра p.
В данном синтаксисе вы можете видеть, что если значение параметра изменяется, условие также изменяется.
В первом случае, если p = 'Закрыто', select ... where q-isnull(r,0)=0
если p = 'Pending', тогда select ... where (q - isnull(r,0) )>0
В первом условии он сравнивает условие «равно» и в следующем примере он «больше» нулевого значения.
как в третьем условии, я хочу, чтобы отобразить все записи.
Здесь проблема в том, что структура 'case' возвращает только значение, а не выражение.