我正在工作或报告您可以输入客户编号以查看所有详细信息。我被要求进行更改,他们可以输入客户端代码或0600为所有客户端的起始名称为“Jim Bob”或0400为客户名称以“Joe Bob”开头我已经提出以下声明但是它不起作用,有人可以帮助我。我正在使用sql 2008
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 :(得分: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