Alteração de nomes duplicados

SQL Server

Automação Comercial

21/12/2016

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

Curtidas 0

Melhor post

T Rodrigues

T Rodrigues

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.
GOSTEI 1

Mais Respostas

Luiz Santos

Luiz Santos

21/12/2016

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
GOSTEI 0
T Rodrigues

T Rodrigues

21/12/2016

Vou verificar aqui .
Muito Obrigado Luiz
GOSTEI 0
T Rodrigues

T Rodrigues

21/12/2016

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 ?
GOSTEI 0
Fabiano Carvalho

Fabiano Carvalho

21/12/2016

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.
GOSTEI 0
T Rodrigues

T Rodrigues

21/12/2016

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.
GOSTEI 0
Luiz Santos

Luiz Santos

21/12/2016

Thalyson, é só você ajustar o WHERE.
GOSTEI 0
Alec Candia

Alec Candia

21/12/2016

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. :-)
GOSTEI 0
T Rodrigues

T Rodrigues

21/12/2016

Muito Obrigado .
Deu certo
GOSTEI 0
POSTAR