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á!
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
Curtir tópico
+ 0
Responder
Posts
12/08/2016
Carlos Faria
Amigo
O campo que vc esta atualizando é Chave primaria , se for não vai atualizar ok
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?
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
Clique aqui para fazer login e interagir na Comunidade :)