Я имею ошибочное заявление:Использование СЛУЧАЯ внутри условного В статье
select
value_1, value_2
from
zt_Report
where
Division_CD in CASE WHEN @Division ='(ALL EPCD)' THEN ('Epoxy', 'MDP', 'OTG', 'PSR') ELSE @Division END
and [Business_CD] like CASE WHEN @Business='(All)' THEN '%' ELSE @Business END
and [Plant_TX] like CASE WHEN @Plant='(All)' THEN '%' ELSE @Plant+'%' END
Getting ошибку на линии:
Where Division_CD in CASE WHEN @Division ='(ALL EPCD)' THEN ('Epoxy', 'MDP', 'OTG', 'PSR') ELSE @Division END
Что по существу должно произойти, когда параметр деления передается (ALL EPCD)
, то предложение WHERE
разрешит только делениям 'Epoxy', 'MDP', 'OTG', 'PSR'
, в противном случае он должен отфильтровать именно на этом divison, т.е. прохождение Epoxy
в Отдел будет устанавливать WHERE
, чтобы найти только Epoxy
деление
Это работает, но я не понимаю, почему. Часть разделения имеет смысл, но для бизнеса, передавая '(All)', левая строка имеет значение true: '@Business = '(All)' ', поэтому она просто игнорирует право,' Business_CD = @ Business', что позволяет всем предприятиям в? – Sauron
@Sauron. , , Да, так работают булевские операции. –