Estou tentando escrever uma consulta que atualizará minha tabela #master12.cg
quando ela for nula. Então, aqui estão os meus passos necessários:
1) Verifique se
#master12.uid
existe#check1.dasboot
e se existir, atualize#master12.cg
com esse valor
2) Verifique se#master12.uid
existe#check.uid
e se atualize#master12.cg
com o valor em#check2.redbluegreen
3) Se#master12.uid
não existir em nenhuma das tabelas, apenas deixe#master12.uid
como nulo
Eu tentei esta consulta
Update #master12
Set [cg] = case
when exists (Select [dasboot] FROM [#check1] WHERE [#master]. [uid] = [#check1].[uid])
when not exists (Select [redbluegreen] FROM [#check2] WHERE [#master12].[uid] = [#check2].[uid]
else [#master12].[cg]
end
WHERE [#master12].[cg] IS NULL
No entanto esta consulta apresenta um erro de:
Msg 156, Nível 15, Estado 1, Linha 4
Sintaxe incorreta perto da palavra-chave 'quando'.
Msg 156, Nível 15, Estado 1, Linha 5
Sintaxe incorreta perto da palavra-chave 'else'.
Como devo escrever esta instrução de atualização para que as verificações listadas acima sejam executadas e minha tabela seja atualizada de acordo?
Caso SQLServer quando a instrução não funciona assim. Você precisa de uma condição e, em seguida, um resultado. Sua consulta tem apenas uma condição.
Você poderia reescrever sua consulta assim:
Ou talvez em um único como:
Mas também vai depender do que você quer quando tem um valor uid presente nas tabelas #check1 e #check2 e qual valor você quer que seja usado para a atualização.
Você tem um problema com o seu caso. A sintaxe é