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
Post a Comment