sql - How to return mulitple columns in a WHERE clause CASE statement -


my stored procedure accepts parameters , 1 of them @searchby can contain couple of different values iisapppool, scheduledtask, windowsservice, com+, serviceaccount, etc shown in case statement below.

depending on value go , value in value's corresponding column.

scomponenttype contain iis_app_pool, sched_task, win_service or com_plus irrespective of @searchby is.

i struggling clause, needs case statement.

the following working fine.

where      sdate between @fromdate , @todate      ,           case @searchby                when 'iisapppool' scomponentname                when 'scheduledtask' scomponentname                when 'windowsservice' scomponentname                when 'com+' scomponentname                when 'serviceaccount' sserviceaccount                when 'server' sservername                when 'imccreference' simccreference                when 'user' smanager           end like('%' + @searchcriteria + '%') 

what looking like:

where      sdate between @fromdate , @todate      ,           case @searchby                when 'iisapppool' scomponentname , scomponenttype = 'iis_app_pool'                when 'scheduledtask' scomponentname , scomponenttype = 'sched_task'                when 'windowsservice' scomponentname , scomponenttype = 'win_service'                when 'com+' scomponentname , scomponenttype = 'com_plus'                when 'serviceaccount' sserviceaccount                when 'server' sservername                when 'imccreference' simccreference                when 'user' smanager           end like('%' + @searchcriteria + '%') 

i know not possible tried following in addition have above don't know how write code if @searchby not app pool, scheduled task, windows service or com+ component:

and      scomponenttype =           case @searchby                when 'iisapppool' 'iis_app_pool'                when 'scheduledtask' 'sched_task'                when 'windowsservice' 'win_service'                when 'com+' 'com_plus'           end 

i hope making sense.

can not use searched case statement rather simple case statement? e.g.

and       case             when @searchby = 'iisapppool' , scomponenttype = 'iis_app_pool' scomponentname             when @searchby = 'scheduledtask' , scomponenttype = 'sched_task' scomponentname            when @searchby = 'windowsservice' , scomponenttype = 'win_service' scomponentname            when @searchby = 'com+' , scomponenttype = 'com_plus' scomponentname            when @searchby = 'serviceaccount' sserviceaccount            when @searchby = 'server' sservername            when @searchby = 'imccreference' simccreference            when @searchby = 'user' smanager       end like('%' + @searchcriteria + '%') 

Comments

Popular posts from this blog

html - How to style widget with post count different than without post count -

How to remove text and logo OR add Overflow on Android ActionBar using AppCompat on API 8? -

javascript - storing input from prompt in array and displaying the array -