Updade Firebird SQL
09/09/2015
0
Boa Noite pessoal.
Tenho uma tabela de clientes com as seguintes informações...
Codigo Nome Status
1 Joao A
2 Joao A
3 Pedro A
4 Marcos A
5 Marcos A
gostaria de mudar o status para I de um dos clientes que foram duplicados..
Ou seja queria desativar um e deixar o outro ativo..
EXemplo: Joao, deixar apenas um com A
Obrigado. desde já.
Tenho uma tabela de clientes com as seguintes informações...
Codigo Nome Status
1 Joao A
2 Joao A
3 Pedro A
4 Marcos A
5 Marcos A
gostaria de mudar o status para I de um dos clientes que foram duplicados..
Ou seja queria desativar um e deixar o outro ativo..
EXemplo: Joao, deixar apenas um com A
Obrigado. desde já.
Antonelly Silva
Curtir tópico
+ 0
Responder
Posts
19/11/2015
Jothaz
declare @tab table (Codigo int, Nome varchar(20), Status char(1)) insert into @tab (Codigo, Nome, Status) values (1, 'Joao', 'A') insert into @tab (Codigo, Nome, Status) values (2, 'Joao', 'A') insert into @tab (Codigo, Nome, Status) values (3, 'Pedro', 'A') insert into @tab (Codigo, Nome, Status) values (4, 'Marcos', 'A') insert into @tab (Codigo, Nome, Status) values (5, 'Marcos', 'A') --Listando toda a tabela select * from @tab --Listando duplicados SELECT nome, count(*) FROM @tab GROUP BY nome HAVING COUNT(*) > 1 --Listando duplicados - Recuperando o maior Codigo SELECT max(codigo) FROM @tab GROUP BY nome HAVING COUNT(*) > 1 --Fazendo update do Status dos duplicados,no caso de maior Codigo update @tab set status = 'I' where codigo in (SELECT max(codigo) FROM @tab GROUP BY nome HAVING COUNT(*) > 1) --Listando toda a tabela com Status atualizado select * from @tab
[img]http://arquivo.devmedia.com.br/forum/imagem/418027-20151119-144248.png[/img]
Responder
19/11/2015
Marcos P
No SQL Server...
create table #tab (Codigo int, Nome varchar(20), Status char(1)) insert into #tab (Codigo, Nome, Status) values (1, 'Joao', 'A') insert into #tab (Codigo, Nome, Status) values (2, 'Joao', 'A') insert into #tab (Codigo, Nome, Status) values (3, 'Pedro', 'A') insert into #tab (Codigo, Nome, Status) values (4, 'Marcos', 'A') insert into #tab (Codigo, Nome, Status) values (5, 'Marcos', 'A') update #tab set Status = 'I' where Codigo in (select Max(Codigo) from #tab group by Nome) and Nome in (select Nome from #tab group by Nome having count(1) > 1)
Responder
Clique aqui para fazer login e interagir na Comunidade :)