UPDATE COM SELECT NO SQL SERVER

12/08/2016

0

Caros amigos, boa tarde!

Sou novo aqui, inclusive e meu primeiro post e estou com um grande problema.

Preciso zerar os registros duplicados de uma tabela (Fol_Ficha_Financeira), eu consegui fazer um SELECT para descobrir quais são os valores duplicados, porém não consigo atualizar os valores com 0.

Com o select abaixo, consegui encontrar os valores duplicados.

Eu pensei atualizar o campo FOL_FICHA_FINANCEIRA.vl_valor para zero e

SELECT FOL_FUNCIONARIO.nu_matricula, FOL_VERBA.cod_verba, FOL_VERBA.nm_verba, FOL_FICHA_FINANCEIRA.id_referencia, FOL_FICHA_FINANCEIRA.id_processo, FOL_FICHA_FINANCEIRA.nu_quantidade, FOL_FICHA_FINANCEIRA.vl_valor, COUNT(CAST(FOL_FUNCIONARIO.nu_matricula AS VARCHAR (20)) +'-'+ FOL_FICHA_FINANCEIRA.id_referencia +'-'+CAST(id_processo AS VARCHAR(2))) AS CONTAGEM

FROM FOL_FUNCIONARIO INNER JOIN (FOL_FICHA_FINANCEIRA INNER JOIN FOL_VERBA ON FOL_FICHA_FINANCEIRA.id_verba = FOL_VERBA.id_verba) ON FOL_FUNCIONARIO.id_funcionario = FOL_FICHA_FINANCEIRA.id_funcionario

WHERE FOL_FICHA_FINANCEIRA.id_referencia = '022015'

GROUP BY FOL_FUNCIONARIO.nu_matricula, FOL_VERBA.cod_verba, FOL_VERBA.nm_verba, FOL_FICHA_FINANCEIRA.id_referencia, FOL_FICHA_FINANCEIRA.id_processo, FOL_FICHA_FINANCEIRA.nu_quantidade, FOL_FICHA_FINANCEIRA.vl_valor

HAVING COUNT(CAST(FOL_FUNCIONARIO.nu_matricula AS VARCHAR (20)) +'-'+ FOL_FICHA_FINANCEIRA.id_referencia +'-'+CAST(id_processo AS VARCHAR(2)))>1

Utilizando UPDATE coloquei o código abaixo

UPDATE FOL_FICHA_FINANCEIRA SET VL_VALOR = 0

FROM FOL_FUNCIONARIO INNER JOIN (FOL_FICHA_FINANCEIRA INNER JOIN FOL_VERBA ON FOL_FICHA_FINANCEIRA.id_verba = FOL_VERBA.id_verba) ON FOL_FUNCIONARIO.id_funcionario = FOL_FICHA_FINANCEIRA.id_funcionario

WHERE FOL_FICHA_FINANCEIRA.id_referencia = '022015'

GROUP BY FOL_FUNCIONARIO.nu_matricula, FOL_VERBA.cod_verba, FOL_VERBA.nm_verba, FOL_FICHA_FINANCEIRA.id_referencia, FOL_FICHA_FINANCEIRA.id_processo, FOL_FICHA_FINANCEIRA.nu_quantidade, FOL_FICHA_FINANCEIRA.vl_valor

HAVING COUNT(CAST(FOL_FUNCIONARIO.nu_matricula AS VARCHAR (20)) +'-'+ FOL_FICHA_FINANCEIRA.id_referencia +'-'+CAST(id_processo AS VARCHAR(2)))>1

Mas mesmo assim não deu.

Muito obrigado pela ajuda desde já!
William Pereira

William Pereira

Responder

Posts

12/08/2016

Carlos Faria

Amigo
O campo que vc esta atualizando é Chave primaria , se for não vai atualizar ok
Responder

26/08/2016

David Styveen

Boa tarde, Willian.

Ele não está deixando fazer o update por conta do Group By. Tirando as duas cláusulas já resolveria, porém acredito que tenha que zerar apenas um dos registros duplicados, correto?
Há uma forma de identificar esses registros de forma separada?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar