Case When in SQL procedure -


i'm trying use case when in sql procedure.

what want when variable @id_etapa 6 little diferent. i'm getting multiple erros. incorrect syntax near = , incorrect syntax near else knows i'm missing?

where case        when @id_etapa=6          ss.id_statussolicitacao = 1 -- pendentes             , ss.id_etapa = @id_etapa          else             ss.id_statussolicitacao = 1 -- pendentes    end 

the full select error in clause.

select distinct cf.nom_filial,         ss.cod_solicitacao,         ss.cod_gtv,         ss.seq_gtv,         ss.cod_seriegtv,         st.des_tpservico,         ssi.des_sistemaanalise,         ssi.id_sistemaanalise,         sm.des_motivosolicitacao,         se.des_etapa,         ss.id_etapa,         sst.des_statussolicitacao,         cfsolicitante.nom_func      nom_solicitante,         cfsucessor.nom_func     nom_sucessor,         cfoperador.nom_func     nom_operador,         ss.des_detalhamentogtv,         sa.id_grupoacesso  #dados  sse_solicitacao ss  inner join cor_filial cf on  cf.cod_regional     = ss.cod_regional     , cf.cod_filial   = ss.cod_filial  inner join sse_tpservico st on  st.id_tpservico = ss.id_tpservico  inner join sse_sistemaanalise ssi on  ssi.id_sistemaanalise = ss.id_sistemaanalise  inner join sse_motivosolicitacao sm on  sm.id_motivosolicitacao = ss.id_motivosolicitacao  inner join sse_etapa se on  se.id_etapa = ss.id_etapa  inner join sse_statussolicitacao sst on  sst.id_statussolicitacao = ss.id_statussolicitacao  inner join cor_funcionario cfsolicitante on  cfsolicitante.cod_func = ss.cod_funcsolicitante  inner join sse_acesso sa on  sa.cod_funcsolicitante = ss.cod_funcsolicitante  left join cor_funcionario cfsucessor on  cfsucessor.cod_func = ss.cod_funcsucessor  left join cor_funcionario cfoperador on  cfoperador.cod_func = ss.cod_funcoperador  ss.id_statussolicitacao = case        when @id_etapa=6          ss.id_statussolicitacao = 1 -- pendentes             , ss.id_etapa = @id_etapa          else             ss.id_statussolicitacao = 1 -- pendentes    end  order ss.cod_solicitacao 

the case statement must part of where statement. try:

where ss.id_statussolicitacao = case        when @id_etapa=6          ss.id_statussolicitacao = 1 -- pendentes             , ss.id_etapa = @id_etapa          else             ss.id_statussolicitacao = 1 -- pendentes    end 

see post more information: "case" statement within "where" clause in sql server 2008

edit

try taking ss.id_statussolicitacao = 1 out of case expression , placing afterwards:

where ss.id_etapa =      case when @id_etapa=6 @id_etapa          else 0 --- use value depends on other values possible @id_etapa variable of course     end , ss.id_statussolicitacao = 1 

Comments

Popular posts from this blog

How to understand 2 main() functions after using uftrace to profile the C++ program? -

c# - Update a combobox from a presenter (MVP) -

How to put a lock and transaction on table using spring 4 or above using jdbcTemplate and annotations like @Transactional? -