2017-04-07 44 views
0

時我試圖在sql過程中使用一個案例。案例在SQL過程

我想要的是當變量@ID_ETAPA是6時,哪裏有點不同。但我收到了多個錯誤。 不正確的語法附近= 和 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 

完整的選擇,錯誤的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 
+0

的錯誤繼續在相同的兩個地方。 –

+0

可能是紫色的答案將工作,因爲條件需要條件操作數.... –

回答

0

CASE聲明必須是WHERE聲明的一部分。嘗試:

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 

看到這個職位的詳細信息:"CASE" statement within "WHERE" clause in SQL Server 2008

編輯

嘗試採取SS.ID_STATUSSOLICITACAO = 1CASE表達的,並把它算賬:

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 
+0

我仍然收到「=」和「其他」語法錯誤。語法錯誤。 –

+0

你能提供在WHERE子句之前使用的SELECT語句嗎? –

+0

我會在完整的代碼下面發帖。 –