[英]Case When in SQL procedure
I'm trying to use a case when in a sql procedure. 我正在尝试在sql过程中使用一种情况。
What i want is that when the variable @ID_ETAPA is 6 the where is a little diferent. 我想要的是,当变量@ID_ETAPA为6时,哪里有点不同。 But i'm getting multiple erros.
但是我得到了多个错误。 Incorrect syntax near = And Incorrect syntax near ELSE Someone knows what i'm missing?
=附近的语法不正确以及ELSE附近的语法不正确有人知道我缺少什么吗?
WHERE CASE
WHEN @ID_ETAPA=6 THEN
SS.ID_STATUSSOLICITACAO = 1 -- PENDENTES
AND SS.Id_etapa = @ID_ETAPA
Else
SS.ID_STATUSSOLICITACAO = 1 -- PENDENTES
END
THE full select with error in the where clause. 在where子句中有错误的完全选择。
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 AS NOM_SOLICITANTE,
CFSUCESSOR.NOM_FUNC AS NOM_SUCESSOR,
CFOPERADOR.NOM_FUNC AS NOM_OPERADOR,
SS.DES_DETALHAMENTOGTV,
SA.ID_GRUPOACESSO
INTO #DADOS
FROM SSE_SOLICITACAO SS
INNER JOIN COR_FILIAL CF
ON CF.COD_REGIONAL = SS.COD_REGIONAL
AND 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
WHERE SS.ID_STATUSSOLICITACAO = CASE
WHEN @ID_ETAPA=6 THEN
SS.ID_STATUSSOLICITACAO = 1 -- PENDENTES
AND SS.Id_etapa = @ID_ETAPA
Else
SS.ID_STATUSSOLICITACAO = 1 -- PENDENTES
END
ORDER BY SS.COD_SOLICITACAO
The CASE
statement must be part of the WHERE
statement. CASE
语句必须是WHERE
语句的一部分。 Try: 尝试:
WHERE SS.ID_STATUSSOLICITACAO = CASE
WHEN @ID_ETAPA=6 THEN
SS.ID_STATUSSOLICITACAO = 1 -- PENDENTES
AND SS.Id_etapa = @ID_ETAPA
Else
SS.ID_STATUSSOLICITACAO = 1 -- PENDENTES
END
See this post for more information: "CASE" statement within "WHERE" clause in SQL Server 2008 有关更多信息,请参见此帖子: SQL Server 2008中“ WHERE”子句中的“ CASE”语句
EDIT 编辑
Try taking SS.ID_STATUSSOLICITACAO = 1
out of the CASE
expression and placing it afterwards: 尝试从
CASE
表达式中取出SS.ID_STATUSSOLICITACAO = 1
并将其放置在SS.ID_STATUSSOLICITACAO = 1
:
WHERE SS.Id_etapa =
CASE WHEN @ID_ETAPA=6 THEN @ID_ETAPA
ELSE 0 --- What you use for this value depends on what other values are possible for the @ID_ETAPA variable of course
END
AND SS.ID_STATUSSOLICITACAO = 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.