Usuário com melhor resposta
update com case (sintaxe correta)

Pergunta
-
Preciso fazer um update na minha tabela, com um case.
Fiz da seguinte forma:
UPDATE
#TB_RESULTADO
THEN VL_VARIACAO = VL_MES1_REALIZADO - VL_MES1_ORCADO,
ELSE VL_PERCENTUAL = VL_MES1_REALIZADO /VL_MES1_ORCADO
FROM #TB_RESULTADODá erro de sintaxe.
Onde estou errando?
Também tentei com o if else, da seguinte forma:
IF
(SELECT VL_MES1_FORECAST FROM #TB_RESULTADO) = '0,00'
BEGIN
SET
VL_VARIACAO = VL_MES1_REALIZADO -VL_MES1_ORCADO
SET
VL_PERCENTUAL = VL_MES1_REALIZADO / VL_MES1_ORCADO
END
BEGIN
SET
VL_VARIACAO = VL_MES1_REALIZADO - VL_MES1_FORECAST,
SET
VL_PERCENTUAL = VL_MES1_REALIZADO /VL_MES1_FORECAST
END
FROM#TB_RESULTADO RES
SELECT CD_CONTA, SUM(ISNULL(VL_FORECAST,0)) AS TOT_FORECAST, SUM(ISNULL(VL_ORCADO,0)) ASTOT_ORCADO
FROM PLANEJAMENTO.DBO.TB_SOLIC_ORCAMENTO_DADOS SOD
WHERE
MONTH(DT_REFERENCIA) = @MESREF AND YEAR(DT_REFERENCIA) =@ANO
GROUP BY CD_CONTA) ASVAL
ON RES.CD_CONTA = VAL.CD_CONTAMas tbm está dando erro de sintaxe.
Alguem pode me ajudar?
Obrigado
Respostas
-
Consegui fazer.
Segue o resultado
UPDATE
#TB_RESULTADO
- Marcado como Resposta Rodrigo Nikitin Marcondes quarta-feira, 13 de julho de 2011 15:30
Todas as Respostas
-
Rodrigo teste este script
UPDATE #TB_RESULTADO SET VL_VARIACAO = CASE WHEN VL_MES1_FORECAST = 0 THEN VL_MES1_REALIZADO - VL_MES1_ORCADO ELSE VL_MES1_REALIZADO - VL_MES1_FORECAST END ,VL_PERCENTUAL = CASE WHEN VL_MES1_FORECAST = 0 THEN VL_MES1_REALIZADO / VL_MES1_ORCADO ELSE VL_MES1_REALIZADO /VL_MES1_FORECAST END
Att.
Marcelo FernandesMCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba- Sugerido como Resposta Marcelo Fernandes da SilvaMVP quarta-feira, 13 de julho de 2011 15:25
- Marcado como Resposta Rodrigo Nikitin Marcondes terça-feira, 8 de novembro de 2011 17:35
- Não Marcado como Resposta Rodrigo Nikitin Marcondes terça-feira, 8 de novembro de 2011 17:36
-
Experimente mais ou menos desta forma:
UPDATE #TB_RESULTADO SET
VL_VARIACAO = CASE WHEN VL_MES1_FORECAST = 0 THEN VL_MES1_REALIZADO - VL_MES1_ORCADO ELSE VL_VARIACAO END,
VL_PERCENTUAL = CASE WHEN VL_MES1_FORECAST = 0 THEN VL_PERCENTUAL ELSE VL_MES1_REALIZADO / VL_MES1_ORCADO END
Espero que seja útil.
Assinatura: Imoveis comerciais em Guarulhos -
Consegui fazer.
Segue o resultado
UPDATE
#TB_RESULTADO
- Marcado como Resposta Rodrigo Nikitin Marcondes quarta-feira, 13 de julho de 2011 15:30