Alteração de nomes duplicados

21/12/2016

0

Boa tarde galera, estou com um problema aqui.
Tenho um banco de dados SQL onde a descrição se repete varias vezes, verifiquei pelo comando abaixo.

SELECT Campo, ativo FROM tabela WHERE ativo ='s' and Campo IN
(SELECT Campo FROM PRODUTOS GROUP BY Campo HAVING COUNT(*) > 1)
order by Campo

Gostaria de saber se tem como alterar o nome dos itens em duplicidade .Deixando o primeiro sem alteração e modificando os demais.
Exemplo:

Camisa
Camisa
Camisa
Alterar para:

Camisa
1Camisa
2Camisa
T Rodrigues

T Rodrigues

Responder

Post mais votado

22/12/2016

Boa tarde Alec Candia,
O banco em questão e de uma rede de supermercado , pois cada vês que um item muda de código de barras o cliente estava cadastrando o mesmo item porem com o código EAN diferente e inativando o antigo.
Porem analisando os arquivos fiscais do cliente a um erro por ter vários produtos com a mesma descrição porem códigos diferentes.
Criei o comando para alterar somente os itens inativos. E corrigindo a duplicidade das descrições.

T Rodrigues

T Rodrigues
Responder

Mais Posts

21/12/2016

Luiz Santos

Oi Thalyson.

Me parece que é SQL Server.

Você vai precisar usar a clausula OVER para gerar um ID para cada linha e fazer o UPDATE.

Segue um link com um exemplo

http://stackoverflow.com/questions/19124662/how-to-use-row-number-in-update-clause

Grande abs
Responder

21/12/2016

T Rodrigues

Vou verificar aqui .
Muito Obrigado Luiz
Responder

22/12/2016

T Rodrigues

Esse comando não deu certo , pois queri alterar o nome do registro duplicado.
Ex:
cod - Nome
1 - Camisa
70 - 1Camisa
5 - 2Camisa

Queria alterar o nome dos duplicados porem mantendo um original.
Teria como ?
Responder

22/12/2016

Fabiano Carvalho

Fiz uma postagem em meu blog, da uma olhada.http://www.carvalhof.com.br/remover-linhas-duplicadas/

Voce pode fazer assim.

select 
cast(d as varchar(10)) + ' ' + [coluna_duplicada],* 
from (select row_number() over(partition by [coluna_duplicada] order by [coluna_duplicada]) as D,*
from [nome_sua_tabela]) as Tabela

--O Update ficaria assim
update tabela = [coluna_duplicada] = cast(d as varchar(10)) + ' ' + [coluna_duplicada]
cast(d as varchar(10)) + ' ' + [coluna_duplicada],* 
from (select row_number() over(partition by [coluna_duplicada] order by [coluna_duplicada]) as D,*
from [nome_sua_tabela]) as Tabela


Retorne, caso tenha dúvida.
Responder

22/12/2016

T Rodrigues

Boa tarde Faabiianooc,

O código de funcionou , porem o primeiro item não pode ser alterado , dessa forma todos estão sofrendo alteração.
Responder

22/12/2016

Luiz Santos

Thalyson, é só você ajustar o WHERE.
Responder

22/12/2016

Alec Candia

Thalyson, não entendi a tua necessidade. Imaginei um banco de dados, enorme, com 1002Camisa... 1003Camisa. Sei lá, creio ter uma forma mais organizada para resolver esse problema. Um novo arquivo CAMISA e mais um MODELO, talvez. Ou, na pior (ou melhor) das hipóteses, tratar a descrição associada a uma ID ou outro campo. Exemplo: ID + DESCRIÇÃO.

Eu repensaria a estrutura da base de dados. :-)
Responder

22/12/2016

T Rodrigues

Muito Obrigado .
Deu certo
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