2015-10-24 3 views
-1

Я работаю или сообщаю, что вы можете ввести номер клиента, чтобы просмотреть все детали. Меня попросили внести изменения, когда они могут ввести код клиента или 0600 для всех клиентов с начальным именем «Jim Bob» или 0400 для имени клиента, которое начинается с «Joe Bob». Я придумал заявление ниже, но это не работает, может кто-то мне помочь. Я использую SQL 2008установка параметра в proc

where case when (@ClientCode = 0600 then c.sClientName Like 'Jim Bob%') else 
when (@ClientCode = 0400 then c.sClientName like 'Joe Bob%') else 
c.sClientCode = @ClientCode) 

ответ

0

Вам не нужно CASE в вашем сценарии, достаточно использовать правильную комбинацию AND и OR утверждений:

where 
    -- Next line is used only when client code is 0600 
    @ClientCode = 0600 and c.sClientName Like 'Jim Bob%' OR 
    -- Next line is used only when client code is 0400 
    @ClientCode = 0400 and c.sClientName like 'Joe Bob%' OR 
    -- Next line is used only when client code is not 0400 or 0600 
    @ClientCode NOT IN (0400, 0600) AND c.sClientCode = @ClientCode 

Кстати, если ваш тип клиента является текстовым типом (например, varchar, nvarchar или аналогичным) вам нужно использовать котировки, например '0600' вместо 0600. Если это числовой тип, вам не нужно 0 в начале, и вы можете использовать 600 вместо 0600

+0

Спасибо, что это сработало отлично – user3818712

Смежные вопросы